2012-01-20 1 views
5

Я пытаюсь subcribe к RedirectingToIdentityProvider события в Application_Start(), но FederatedAuthentication.WSFederationAuthenticationModule является нулевымFederatedAuthentication.WSFederationAuthenticationModule является недействительным во время выполнения

кода

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

Тот же вопрос, как @garrett предложил безрезультатно. –

+0

Кто-нибудь получил ответ на это? –

ответ

3

Это звучит, как вы можете в вашей конфигурации отсутствует 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" /> 

Read here для получения дополнительной информации.

+0

Могу ли я добавить его во время выполнения вместо веб-конфигурации? – Homam

4

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

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


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

Я думаю, что '.ServiceConfigurationCreated' отсутствует в' System.IdentityModel.Services.FederatedAuthentication' (реализация .NET 4.5). –

3

Вот точность для .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> 
2

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

System.IdentityModel.Services.WSFederationAuthenticationModule 

, а не:

Microsoft.IdentityModel.Web.FederatedAuthentication.WSFederationAuthenticationModule 

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

Смежные вопросы