自定义app.config部分无法强制转换为NameValueCollection

时间:2016-01-12 21:07:01

标签: c# web-config app-config

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>

在即时窗口中,我可以执行:

System.Configuration.ConfigurationManager.GetSection("Authentication.WSFedShell")

返回字符串

["Authentication.PrincipalType"]: "ClientCertificate"

但是,当我尝试使用as NameValueCollection)进行投射时,正如this tutorial所说的那样,我会返回null并且我的代码会爆炸。必须有一种更清洁的方式来获得价值&#34; ClientCertificate&#34;而不是手动解析字符串结果。

我如何阅读&#34; ClientCertificate&#34;来自app.config

1 个答案:

答案 0 :(得分:1)

为什么你不能使用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");