我有一个 WinForm 派生应用程序(注意不是 ASP.NET Web 应用程序),我需要从中修改任意 web.config 文件的自定义部分。例如,如果我的 web.config 是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- General web.config stuff follows -->
<system.web>
<httpRuntime executionTimeout="110" maxRequestLength="1024" requestValidationMode="2.0" />
</system.web>
<MyConfigSection>
<GeneralParameters>
<param key="Var1" value="value1" />
</GeneralParameters>
</MyConfigSection>
</configuration>
我可以轻松地修改一些默认参数,例如,因为maxRequestLength
我会这样做并且它会起作用:
//Path to the web.config file
string strWebConfigFile = @"C:\My files\web.config";
//Convert absolute path to virtual
var configFile = new FileInfo(strWebConfigFile);
var vdm = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name);
var wcfm = new WebConfigurationFileMap();
wcfm.VirtualDirectories.Add("/", vdm);
//Open web.config file
System.Configuration.Configuration config =
System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/");
if (config != null)
{
System.Configuration.ConfigurationSection system_web =
config.GetSection("system.web/httpRuntime");
PropertyInformation pi = system_web.ElementInformation.Properties["maxRequestLength"];
pi.Value = 1234; //Set new value
//Save
config.Save(ConfigurationSaveMode.Modified);
}
问题是当我尝试修改我的自定义部分时。说,如果我想用 重写Var1
参数的值value2
,如下:
System.Configuration.ConfigurationSection genParams = config.GetSection("MyConfigSection/GeneralParameters");
返回null
,如果我用 just 调用它MyConfigSection
,它会给我这个例外:
为 MyConfigSection 创建配置节处理程序时出错:无法从程序集“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=N”加载类型“MyWebApp.Configuration”。
我该怎么做才能添加“配置节处理程序”?