How to: Create Custom Configuration Sections Using ConfigurationSection
https://msdn.microsoft.com/en-us/library/2tw134k3.aspx
You can extend ASP.NET configuration settings with XML configuration elements of your own.
To do this, you create a custom configuration section handler.
The handler must be a .NET Framework class that inherits from the System.Configuration.ConfigurationSection class.
The section handler interprets解释 and processes the settings that are defined in XML configuration elements in a specific section of a Web.config file.
You can read and write these settings through the handler's properties.
To create a custom configuration section handler
Create a public class that inherits from the System.Configuration.ConfigurationSection class.
Add code to define the section's attributes and elements.
The following example shows how to create a handler for a custom configuration section named "PageAppearance."
The section has a RemoteOnly attribute and Font and Color elements.
The code shows how to use string, integer, and Boolean attributes.
It also shows how to use string and integer validators验证器 for those attributes. (The Boolean attribute is automatically validated经过验证的.)
The validators check the format of the configuration markup at run time and throw exceptions if the values provided for the custom attributes do not meet the specified criteria.
This example uses the declarative model.
A configuration section handler can also be implemented programmatically.
For an example, see Classes Used to Create Custom Section Handlers and the System.Configuration.ConfigurationSection class overview.
To add a custom section handler to an ASP.NET configuration file
1.In the Web.config file, add a sectionGroup element and a section element inside the configSections element, as shown in the following example.
The declaration associates the custom section handler with the section name.
Note:Nesting a section element in a sectionGroup is optional, but we recommend doing this to help organize configuration data.
<configuration>
<!-- Configuration section-handler declaration area. -->
<configSections>
<sectionGroup name="pageAppearanceGroup">
<section
name="pageAppearance"
type="Samples.AspNet.PageAppearanceSection"
allowLocation="true"
allowDefinition="Everywhere"
/>
</sectionGroup>
<!-- Other <section> and <sectionGroup> elements. -->
</configSections> <!-- Configuration section settings area. --> </configuration>
You can add the section-handler declaration in a different configuration file than the one where you add the custom configuration elements,
providing that the configuration file where the section handler is declared is higher in the configuration file hierarchy.
If you add the section handler declaration to a configuration file that is outside of your application, you must do the following:
Include the assembly that defines the section in the same directory as the Web.config file.
Ensure that the type attribute of the section element matches the manifest of the assembly (ensure that you specify both the correct namespace and type name).
If either of these conditions is not fulfilled, a configuration error will be thrown.
For more information, see ASP.NET Configuration File Hierarchy and Inheritance.
2.Add custom configuration elements in the configuration section settings area of the Web.config file, as shown in the following example:
<configuration> <!-- Configuration section-handler declaration area. --> <!-- Configuration section settings area. -->
<pageAppearanceGroup>
<pageAppearance remoteOnly="true">
<font name="TimesNewRoman" size="18"/>
<color background="000000" foreground="FFFFFF"/>
</pageAppearance>
</pageAppearanceGroup> <!-- Other configuration settings, such as system.web --> </configuration>
To programmatically access custom configuration data
Get an instance of the custom configuration object and use the GetSection method or the GetSection method to populate it.
The following example shows an ASP.NET Web page that works with the previous examples to enumerate the attributes and child elements of the custom configuration section.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Samples.AspNet.PageAppearanceSection config =
(Samples.AspNet.PageAppearanceSection)System.Configuration.ConfigurationManager.GetSection(
"pageAppearanceGroup/pageAppearance"); Response.Write("<h2>Settings in the PageAppearance Section:</h2>");
Response.Write(string.Format("RemoteOnly: {0}<br>",
config.RemoteOnly));
Response.Write(string.Format("Font name and size: {0} {1}<br>",
config.Font.Name, config.Font.Size));
Response.Write(
string.Format("Background and foreground color: {0} {1}<br>",
config.Color.Background, config.Color.Foreground));
}
</script> <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Custom Configuration Section Example</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>
</div>
</form>
</body>
</html>
class derived from ConfigurationSection Class
<runtime> Element
https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/runtime-element
How to programatically modify assemblyBinding in app.config?
I found what I needed. The XmlNamespaceManager is required as the assemblyBinding node contains the xmlns attribute. I modified the code to use this and it works:
private void SetRuntimeBinding(string path, string value)
{
XmlDocument doc = new XmlDocument(); try
{
doc.Load(Path.Combine(path, "MyApp.exe.config"));
}
catch (FileNotFoundException)
{
return;
} XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
manager.AddNamespace("bindings", "urn:schemas-microsoft-com:asm.v1"); XmlNode root = doc.DocumentElement; XmlNode node = root.SelectSingleNode("//bindings:bindingRedirect", manager); if (node == null)
{
throw (new Exception("Invalid Configuration File"));
} node = node.SelectSingleNode("@newVersion"); if (node == null)
{
throw (new Exception("Invalid Configuration File"));
} node.Value = value; doc.Save(Path.Combine(path, "MyApp.exe.config"));
}
How to: Create Custom Configuration Sections Using ConfigurationSection的更多相关文章
- Custom Configuration 的两种方法:1.Configuration Sections
第一种Configuration Sections 1.App.config 2.CustomConfigurationManager.cs 3.TestProgram.cs. App.config ...
- How to Create Custom Filters in AngularJs
http://www.codeproject.com/Tips/829025/How-to-Create-Custom-Filters-in-AngularJs Introduction Filter ...
- create custom launcher icon 细节介绍
create custom launcher icon 是创建你的Android app的图标 点击下一步的时候,出现的界面就是创建你的Android的图标 Foreground: ” Foregro ...
- javax.validation.ValidationException: Unable to create a Configuration, because no Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath.
项目依赖 <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifa ...
- [转]How to Create Custom Filters in AngularJs
本文转自:http://www.codeproject.com/Tips/829025/How-to-Create-Custom-Filters-in-AngularJs Introduction F ...
- java中如何创建自定义异常Create Custom Exception
9.创建自定义异常 Create Custom Exception 马克-to-win:我们可以创建自己的异常:checked或unchecked异常都可以, 规则如前面我们所介绍,反正如果是chec ...
- [转]Create Custom Exception Filter in ASP.NET Core
本文转自:http://www.binaryintellect.net/articles/5df6e275-1148-45a1-a8b3-0ba2c7c9cea1.aspx In my previou ...
- [Angular] Create custom validators for formControl and formGroup
Creating custom validators is easy, just create a class inject AbstractControl. Here is the form we ...
- Custom Configuration 的两种方法:2.XmlSerializer XmlAttribute
第二种:XmlSerializer XmlAttribute 1.CustomConfiguration.xml 2.CustomConfigurationSetting.cs 3.CustomCon ...
随机推荐
- ASP.NET-internat身份验证
ASP.NET-internat身份验证默认在webconfig中配置的代码是这样的 <system.web> <compilation debug="true" ...
- Raspberry PI 系列 —— 裸机点亮LED灯
Raspberry PI 系列 -- 裸机点亮LED灯 背景 近期刚买了Raspberry PI B+,配置执行了官方提供的Raspbian系统,折腾了一周Linux系统,感觉没啥意思,于是就试着想了 ...
- Java线程演示样例 - 继承Thread类和实现Runnable接口
进程(Process)和线程(Thread)是程序执行的两个基本单元. Java并发编程很多其它的是和线程相关. 进程 进程是一个独立的执行单元,可将其视为一个程序或应用.然而,一个程序内部同事还包括 ...
- 【Linux】进程调度概述
1 可运行队列 (基于实时进程调度) 调度程序中最主要的数据结构式运行队列(runqueue).可运行队列是给定处理器上的可运行进程的链表,每一个处理器一个. 每一个可投入运行的进程都唯一的归属于一个 ...
- node21---mongoose
01.js //引包 var mongoose = require('mongoose'); //创建一个数据库连接 mongoose.connect('mongodb://localhost/tes ...
- BZOJ2154: Crash的数字表格 & BZOJ2693: jzptab
[传送门:BZOJ2154&BZOJ2693] 简要题意: 给出n,m,求$\sum_{i=1}^{n}\sum_{j=1}^{m}LCM(i,j)$ 题解: 莫比乌斯反演(因为BZOJ269 ...
- Oracle11g数据库导入Oracle10g数据库操作笔记
一.在11g服务器上,使用expdp命令备份数据 EXPDP USERID='SYS/sys@daggis as sysdba' schemas=oa directory=DATA_PUMP_DIR ...
- 读书笔记-构建高性能Web站点
基本概念 带宽:通常说的带宽比如8M带宽,是指主机与互联网运营商的交换机之间的数据传输速度,因为数据链路层的流量是通过控制接收方实现的.而百兆网卡则是指网卡的发送速度为100Mbit/s,则是指网卡发 ...
- MEF基本概念
基本概念: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库,在.NET 4.0发布 Container:容器,使用Compositi ...
- 启动tomcat运行maven工程报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:
控制台报错信息: