3

web.config に構成があり、正常に動作します。

  <configuration>
  <system.identityModel.services>
    <federationConfiguration>
....
 </federationConfiguration>
  </system.identityModel.services>
</configuration>

これを web.config からカスタム構成ファイルに移動し、コードからロードするにはどうすればよいですか?

この構成ファイルを変更する必要がある場合にコードを変更する必要がないように、この構成と同じ構造を使用したいと考えています。

4

1 に答える 1

6

global.asax から WIF イベントを利用できます。

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    FederatedAuthentication.FederationConfigurationCreated += FederatedAuthenticationOnFederationConfigurationCreated;

}

そのハンドラーでは、実行時に構成を適応させることができます。アイデアを提供するコードを次に示します。終了コードはより複雑になります。

   private void FederatedAuthenticationOnFederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs args)
    {
        var identityConfiguration = new IdentityConfiguration(loadConfig:false);
        identityConfiguration.SecurityTokenHandlers.Clear();
        //...
        identityConfiguration.SecurityTokenHandlers.Add(new Saml2SecurityTokenHandler());
        //...
        var configuration = new FederationConfiguration(loadConfig: false)
        {
            CookieHandler = new ChunkedCookieHandler(),
            //...
            IdentityConfiguration = identityConfiguration
        };
        args.FederationConfiguration = configuration;
    }

どのオブジェクトにどの値を与えるかについて疑問がある場合は、いつでも一時的に設定に戻り、同じイベントを介して実行時の値を調べることができます。WIF によってすぐに提供される構成の複雑さと豊富さを過小評価しないでください。
一般に、「コード構成」と「web.config構成」の混合が必要になる場合があります.web.configは構成の特定のより可変な部分を構成するためにまだ使用されており、コードはより変更不可能な部分に使用されています...

于 2014-06-20T03:09:39.990 に答える