自定义app.config节无法强制转换为NameValueCollection
本文关键字:转换 NameValueCollection app config 自定义 | 更新日期: 2023-09-27 18:30:12
本教程让我尝试做的事情看起来非常简单。我只想从web.config
中读取一个自定义属性。以下是相关部分:
<configSections>
<section name="Authentication.WSFedShell" type="System.Configuration.DictionarySectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<Authentication.WSFedShell>
<add key="Authentication.PrincipalType" value="ClientCertificate" />
</Authentication.WSFedShell>
在即时窗口中,我可以执行:
System.Configuration.ConfigurationManager.GetSection("Authentication.WSFedShell")
返回字符串
["Authentication.PrincipalType"]: "ClientCertificate"
然而,当我尝试转换它(使用as NameValueCollection
)时,正如本教程所说的那样,我会返回null
,并且我的代码会爆炸。必须有一种比手动解析字符串结果更干净的方法来获取值"ClientCertificate"。
如何从app.config
读取"ClientCertificate"
为什么不能像一样使用AppSetting
<configuration>
<appSettings>
<add key="Authentication.PrincipalType" value="ClientCertificate"/>
</appSettings>
</configuration>
System.Configuration.ConfigurationManager.AppSettings["Authentication.PrincipalType"]
您的部分的问题很可能是Type
属性。但无论如何,您需要将GetSection()
的结果强制转换为您为等部分定义的类型
System.Configuration.DictionarySectionHandler config = (System.Configuration.DictionarySectionHandler)System.Configuration.ConfigurationManager.GetSection("Authentication.WSFedShell");