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" />
Читайте здесь для получения дополнительной информации.