C# 如何以编程方式将sectionGroup添加到web.config中
背景 我想在我的web.config中插入以下内容C# 如何以编程方式将sectionGroup添加到web.config中,c#,app-config,C#,App Config,背景 我想在我的web.config中插入以下内容 <sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSect
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
</sectionGroup>
这是生成的配置文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="elmah" type="System.Configuration.ConfigurationSectionGroup, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" >
<section name="security" type="ConfigEditing.Form1+ElmahLogic+Section, ConfigEditing, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</sectionGroup>
</configSections>
<elmah>
<security name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
</elmah>
</configuration>
这完全扭曲了我的瓜:-
- 首先,
元素的节
是我的类的类型(派生自ConfigurationSection)类型
- 其次,通过向组中添加sectionGroup定义,我(同时)将组添加到配置中
我对这些发现并不感到惊讶,因为我真的不理解API,但我只是没有找到任何关于我想做什么的像样的文档。这里的任何人都能提供帮助吗?即使它只是向我指出了一个MSDN示例,这是一个实际完整的工作示例。一个简单的示例,它将在app.config中添加如下部分:
//<configSections>
// <sectionGroup name="elmah" type="Overflow.CustomConfigurationSectionGroup, Overflow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >
// </sectionGroup>
//</configSections>
namespace Overflow
{
public class CustomSecuritySection : ConfigurationSection
{
}
public class CustomConfigurationSectionGroup : ConfigurationSectionGroup
{
public CustomConfigurationSectionGroup()
{
Security = new CustomSecuritySection();
}
[ConfigurationProperty("security")]
public CustomSecuritySection Security { get; private set; }
}
class Program
{
static void Main(string[] args)
{
var config = ConfigurationManager.OpenExeConfiguration(Path.Combine(Application.StartupPath, Application.ProductName + ".exe"));
config.SectionGroups.Add("elmah", new CustomConfigurationSectionGroup());
config.Save(ConfigurationSaveMode.Modified);
}
}
}
//
//
//
//
命名空间溢出
{
公共类CustomSecuritySection:ConfigurationSection
{
}
公共类CustomConfigurationSectionGroup:ConfigurationSectionGroup
{
公共CustomConfigurationSectionGroup()
{
安全性=新的CustomSecuritySection();
}
[配置属性(“安全”)]
公共CustomSecuritySection安全性{get;private set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
var config=ConfigurationManager.OpenExeConfiguration(Path.Combine(Application.StartupPath,Application.ProductName+“.exe”);
添加(“elmah”,新的CustomConfigurationSectionGroup());
config.Save(ConfigurationSaveMode.Modified);
}
}
}
感谢您的回复,但除了我的示例代码之外,它没有添加任何内容(除了您的示例对您创建的安全组没有任何作用)。我想这就是问题所在:如何仅将configSection添加到app.config:“我想在我的web.config中插入以下内容”。
//<configSections>
// <sectionGroup name="elmah" type="Overflow.CustomConfigurationSectionGroup, Overflow, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >
// </sectionGroup>
//</configSections>
namespace Overflow
{
public class CustomSecuritySection : ConfigurationSection
{
}
public class CustomConfigurationSectionGroup : ConfigurationSectionGroup
{
public CustomConfigurationSectionGroup()
{
Security = new CustomSecuritySection();
}
[ConfigurationProperty("security")]
public CustomSecuritySection Security { get; private set; }
}
class Program
{
static void Main(string[] args)
{
var config = ConfigurationManager.OpenExeConfiguration(Path.Combine(Application.StartupPath, Application.ProductName + ".exe"));
config.SectionGroups.Add("elmah", new CustomConfigurationSectionGroup());
config.Save(ConfigurationSaveMode.Modified);
}
}
}