在运行时,FederatedAuthentication.WSFederationAuthenticationModule为null。

7
我在尝试在 Application_Start() 中订阅 RedirectingToIdentityProvider 事件,但是 FederatedAuthentication.WSFederationAuthenticationModule 为空。
代码:
protected void Application_Start()
{
 FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += WSFederationAuthenticationModule_RedirectingToIdentityProvider;
}

同样的问题,已经按照@garrett建议的做了,但没有任何结果。 - Poul K. Sørensen
有人得到了关于这个问题的答案吗? - Matt Whetton
4个回答

6
尝试按照以下步骤操作 - 对我有效。
void Application_Start()
{
    FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
}


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

6
我认为在.NET 4.5的实现中,System.IdentityModel.Services.FederatedAuthentication中没有.ServiceConfigurationCreated - Carl G

4
这是针对 .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>

3

请确保在您的 Global.asax 文件中引用了以下内容:

System.IdentityModel.Services.WSFederationAuthenticationModule

而不是:

Microsoft.IdentityModel.Web.FederatedAuthentication.WSFederationAuthenticationModule

错误的参考(在web.config和global.asax之间不一致)会导致WSFederationAuthenticationModule为null。

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" />

点击此处获取更多相关信息。


我可以在运行时添加它而不是在Web配置中吗? - Homam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接