FederatedAuthentication.WSFederationAuthenticationModule является нулевым во время выполнения

Я пытаюсь подписаться на событие RedirectingToIdentityProvider в Application_Start (), но FederatedAuthentication.WSFederationAuthenticationModule имеет значение null

код

protected void Application_Start()
{
 FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += WSFederationAuthenticationModule_RedirectingToIdentityProvider;
}

4 ответа

Попробуйте сделать это - работает для меня.

void Application_Start()
{
    FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
}


void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
{
    FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += WSFederationAuthenticationModule_RedirectingToIdentityProvider;
} 

Вот точность для.net 4.0

<system.web>
    <httpModules>
          <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </httpModules>
</system.web>
....
<system.webServer>    
    <modules>      
      <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />      
    </modules>
</system.webServer>

Убедитесь, что в вашем Global.asax вы ссылаетесь на

System.IdentityModel.Services.WSFederationAuthenticationModule

и не:

Microsoft.IdentityModel.Web.FederatedAuthentication.WSFederationAuthenticationModule

Неправильная (несовместимая между web.config и global.asax) ссылка приведет к тому, что WSFederationAuthenticationModule будет нулевым.

Похоже, вы можете пропустить WSFederationAuthenticationModule в вашей конфигурации. Убедитесь, что у вас есть это в system.webServer\modules:

<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />

И это в system.web\httpModules:

<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

Читайте здесь для получения дополнительной информации.

Другие вопросы по тегам