WIF:SessionAuthenticationModule始终为空

时间:2013-09-29 07:43:05

标签: c# asp.net-mvc wif

我正在尝试在我正在开发的MVC项目上设置WIF,但无济于事。我遇到的问题是FederatedAuthentication.SessionAuthenticationModule始终为空。我已将以下行添加到configSections下的web.config:

<section name="system.identityModel"
    type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services"
    type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

我还尝试初始化模块:

<modules>
  <add name="SessionAuthenticationModule"
       type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
       preCondition="managedHandler" />
</modules>

仍然没有。我通过nuget安装了WIF。我注意到大多数在线文档的WIF名称空间(就像我上面发布的那样)是System.IdentityModel,而我通过nuget获得的名称空间是Microsoft.IdentityModel。这可能会造成麻烦吗?

一些规格:

标准MVC 4项目

使用Microsoft.IdentityModel.dll v3.5.0.0

2 个答案:

答案 0 :(得分:0)

System.identitymodel.xxx是.Net 4.5版本,如果WIF将所有内容合并到核心框架中。

Microsoft.identitymodel.xxx是单独安装的.net 4版本。

答案 1 :(得分:0)

您无需使用nuget安装WIF 4。 .Net framework 4.5内置了对该库的支持。 你的web.config必须是这样的:

    <configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</configSections>

<system.webServer>
<modules>
  <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
相关问题