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")); }
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2016-03-07 Semaphore and SemaphoreSlim
2016-03-07 SemaphoreSlim
2016-03-07 Mutex
2016-03-07 Semaphore