2013-09-29 78 views
0

我试图让WIF设置在我正在处理的MVC项目上,但无济于事。我遇到的问题是FederatedAuthentication.SessionAuthenticationModule始终为空。我加入以下行的web.config configSections下:WIF:SessionAuthenticationModule总是为空

<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

回答

0

System.identitymodel.xxx是.NET 4.5的版本,如果WIF这里的一切将被合并到核心框架。

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

0

您不需要使用nuget安装WIF 4。 .Net框架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>