【问题标题】:ConfigurationSection deserialisation to concrete typeConfigurationSection 反序列化为具体类型
【发布时间】:2014-10-26 14:04:48
【问题描述】:

我有一个配置文件,其中包含 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( 新的 ExeConfigurationFileMap() { ExeConfigFilename = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile }, ConfigurationUserLevel.None);

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

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

【问题讨论】:

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


    【解决方案1】:

    如果您的 app.config 文件中有该配置,则将自动使用配置部分的正确处理程序,因此您无需执行任何操作,只需调用 IdentityConfiguration.LoadConfiguration() 即可返回您正在寻找的对象。

    更多信息请访问:System.IdentityModel.Configuration.IdentityConfiguration.LoadConfiguration

    评论后编辑:

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

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

    【讨论】:

    • 我可能应该在我的问题中提到这一点,这对我们没有好处,我们主要是在配置代码,这意味着 app.config 被完全忽略了。 msdn.microsoft.com/en-us/library/hh205277(v=vs.110).aspx
    • 已更新以显示您应该使用哪些方法 - 您提供的哪个元素将是一个有趣的问题(除非总是只有一个?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多