访问控制服务和Azure网站无法加载System.IdentityModel.Services

时间:2012-07-21 20:41:09

标签: asp.net-mvc azure wif acs

我在Windows 8发布预览版中使用visual studio 2012 RC创建了一个ASP.NET MVC 4应用程序。我下载并安装了WIF工具包,并使用解决方案菜单中的“身份和访问”选项添加我的访问控制服务元数据端点。在本地测试,一切都很好。当我部署到我的免费天蓝色网站时,我得到黄色屏幕说

  

“无法加载文件或程序集'System.IdentityModel.Services,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或   其中一个依赖项。系统找不到指定的文件。“

这些程序集未在项目中引用,因此我添加了它们,将其发送到bin文件夹并重新部署。然后我收到一条关于装配可能被篡改的消息。有谁知道如何克服这个问题?

EDIT 添加本地会导致此错误

  

无法加载文件或程序集“System.IdentityModel.Services”或一个   它的依赖关系。强名称签名无法验证。该   装配可能已经被篡改,或者是延迟签署但没有   使用正确的私钥完全签名。 (HRESULT的例外情况:   0x80131045)

在网络配置中,模块被取消为

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
      <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
    </modules>
  </system.webServer>

由于

3 个答案:

答案 0 :(得分:1)

我认为这是Azure中的一个已知问题,您需要使用运行gacutil.exe的启动脚本来注册IdentityModel.dll。

按照此处的步骤操作:http://blogs.infosupport.com/adding-assemblies-to-the-gac-in-windows-azure/

修改
我的坏,我以为你在谈论一个Web角色。正如astaykov所说,你不能在网站上有启动任务。好吧也许这会帮助其他人: - )

答案 1 :(得分:1)

因此,您需要显式添加Idendity程序集作为Web应用程序项目的引用,然后将其“Copy Local”属性显式设置为“True”,然后按照MSDN forums thread并使用this session token handler 。仔细阅读blog post

按照所有步骤,您将启用支持WIF的ACS消费应用,就像我刚刚在此处创建的那样:http://wawsacs.azurewebsites.net/(请注意,此网站将于2012年7月25日被我删除)。

答案 2 :(得分:1)

System.identityModel.Services是.NET Framework 4.5 namespace,没有.NET Framework 4.0版本。 Windows Azure网站不支持.NET Framework 4.5。