我有一个DLL,它提供了我用于WebForms项目的日志记录,现在希望在ASP.Net MVC 2项目中使用它。
该DLL的某些方面是在app.config中配置的:
<configuration>
<configSections>
<section name="Tools.Instrumentation.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<Tools.Instrumentation.Properties.Settings>
<setting name="LogLevel" serializeAs="String">
<value>DEBUG</value>
</setting>
<setting name="AppName" serializeAs="String">
<value>MyApp</value>
</setting>
<setting name="Port" serializeAs="String">
<!--value>33333</value-->
<value>0</value>
</setting>
</Tools.Instrumentation.Properties.Settings>
</configuration>
但是,当我在Web.config
中创建类似条目时,我收到错误:
无法识别的配置部分 的applicationSettings
我的两部分问题:
Web.config
?答案 0 :(得分:54)
您的配置文件刚刚缺少applicationSettings部分组:
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Tools.Instrumentation.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false" />
</sectionGroup>
</configSections>
如果你添加它,你可以将你的设置部分放在标签内,你的组件应该正常读取它。
答案 1 :(得分:4)
这是缺少配置的.NET 4版本:
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Tools.Instrumentation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
确保更新<section>
的{{1}}属性值的命名空间以匹配您自己的名称空间。
答案 2 :(得分:3)
请注意该部分的name
属性?
尝试从<applicationSettings>
包装器
<Tools.Instrumentation.Properties.Settings>
<setting name="LogLevel" serializeAs="String">
<value>DEBUG</value>
</setting>
<setting name="AppName" serializeAs="String">
<value>MyApp</value>
</setting>
<setting name="Port" serializeAs="String">
<!--value>33333</value-->
<value>0</value>
</setting>
</Tools.Instrumentation.Properties.Settings>
现在您可以使用该部分。但是你没有生成的包装类,你需要做更多的工作来使用ConfigurationManager
来获取你的值。
关于问题的第二部分,从一个角度来看,Web应用程序与表单应用程序处理配置文件的方式几乎没有区别。
这里可能相关或不相关的一个显着差异是web.config文件可以被层次映射的方式,每个后续文件在允许时有效地扩充或修改父配置。但在我看来,这更像是一种行为差异而不是功能差异。