ConfigurationSection反序列化为具体类型

时间:2014-09-02 10:25:04

标签: c# wcf app-config wcf-security wif

我有一个包含IdentityConfiguration信息的配置文件,我用它来保护我的WCF服务,例如。

<system.identityModel>
    <identityConfiguration>
      <securityTokenHandlers>
        <securityTokenHandlerConfiguration>
          <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <trustedIssuers>
              <add thumbprint="4459.....5E4" name="adfs" />
              <add thumbprint="85BBD0....94A4C7" name="identityServer" />
            </trustedIssuers>
          </issuerNameRegistry>
        </securityTokenHandlerConfiguration>
      </securityTokenHandlers>
      <audienceUris>
        <add value="https://Iamauri/services"/>
      </audienceUris>
    </identityConfiguration>
  </system.identityModel>

我想将上述内容反序列化为IdentityConfiguration对象,但我无法弄清楚如何从表示上述信息的ConfigurationSection转换为具体类型。

到目前为止我所拥有的:

  

var config = ConfigurationManager.OpenMappedExeConfiguration(                       new ExeConfigurationFileMap(){ExeConfigFilename = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile},ConfigurationUserLevel.None);

     

var s =(SystemIdentityModelSection)config.GetSection(“system.identityModel”);

     

// TODO:将s反序列化为IdentityConfiguration

1 个答案:

答案 0 :(得分:0)

如果你的app.config文件中有这样的配置,那么配置部分的正确处理程序将被自动使用,所以除了调用IdentityConfiguration.LoadConfiguration()之外你不应该做任何事情,它应该返回你正在寻找的对象对

更多信息:System.IdentityModel.Configuration.IdentityConfiguration.LoadConfiguration

评论后修改:

如果您手动使用SystemIdentityModelSection对象,则可以使用此对象中包含的IdentityConfigurationElements通过调用IdentityConfiguration来加载IdentityConfiguration.LoadHandlerConfiguration()

有关此方法的更多信息,请访问:System.IdentityModel.Configuration.IdentityConfiguration.LoadHandlerConfiguration