2014-09-02 44 views
0

我有一个配置文件IdentityConfiguration信息,我用它来保护我的WCF服务。ConfigurationSeseserialisation具体类型

<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去表示上述信息的具体类型。

我到目前为止有:

无功配置= ConfigurationManager.OpenMappedExeConfiguration( 新ExeConfigurationFileMap(){ExeConfigFilename = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile},ConfigurationUserLevel.None);

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

// TODO:反序列化s到IdentityConfiguration

回答

0

如果你在你的app.config文件配置,配置部分正确的处理程序会自动使用,所以你不应该做任何事情除了呼叫IdentityConfiguration.LoadConfiguration()这应该返回您正在寻找的对象。

更多信息在:评论后System.IdentityModel.Configuration.IdentityConfiguration.LoadConfiguration

编辑:

如果手动与SystemIdentityModelSection对象时,您可以使用包含在此对象的IdentityConfigurationElements通过调用IdentityConfiguration.LoadHandlerConfiguration()加载一个IdentityConfiguration。就在这个方法

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

+0

我也许应该已经在我的问题提到了这一点,这是没有对我们有好处,我们主要是配置代码,这意味着在app.config完全被忽略。 http://msdn.microsoft.com/en-us/library/hh205277(v=vs.110).aspx – MrEdmundo 2014-09-02 14:35:08

+0

已更新,以显示您应该使用哪些方法 - 您提供哪个元素将是一个有趣的问题,“(除非有总是只有一个?) – toadflakz 2014-09-02 14:46:34