自定义 app.config 部分无法转换为 NameValueCollection
Custom app.config section fails to cast to NameValueCollection
This tutorial 让我想做的事情看起来非常简单。我只想从 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>
立即window我可以执行:
System.Configuration.ConfigurationManager.GetSection("Authentication.WSFedShell")
哪个returns字符串
["Authentication.PrincipalType"]: "ClientCertificate"
然而,当我尝试转换它(使用 as NameValueCollection
)时,正如 this tutorial 所说的那样,我得到 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");
This tutorial 让我想做的事情看起来非常简单。我只想从 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>
立即window我可以执行:
System.Configuration.ConfigurationManager.GetSection("Authentication.WSFedShell")
哪个returns字符串
["Authentication.PrincipalType"]: "ClientCertificate"
然而,当我尝试转换它(使用 as NameValueCollection
)时,正如 this tutorial 所说的那样,我得到 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");