【问题标题】:Access control Service and Azure Websites Could not load System.IdentityModel.Services访问控制服务和 Azure 网站无法加载 System.IdentityModel.Services
【发布时间】:2012-07-22 08:22:50
【问题描述】:

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

“无法加载文件或程序集'System.IdentityModel.Services, 版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089' 或 它的依赖项之一。系统找不到指定的文件。”

项目中没有引用这些程序集,所以我添加了它们,发送到输出到 bin 文件夹并重新部署。然后我收到一条消息,说程序集可能被篡改了。有谁知道如何克服这个问题?

编辑 添加本地会导致此错误

无法加载文件或程序集“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>

谢谢

【问题讨论】:

  • 尝试引用这些程序集并将它们标记为“Copy local = true”,然后重新部署项目。
  • 是的,我试过了,它说组件可能已被篡改

标签: asp.net-mvc azure wif acs


【解决方案1】:

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

【讨论】:

  • 谢谢。我在 VS 2012 中将解决方案定位为 .NET 4,但我想它忽略了它。我可能会在 Win 7 的 VS 2010 中设置它,然后导入它。
【解决方案2】:

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

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

编辑:
我的错,我以为你在谈论 Web 角色。正如 asaykov 所说,您不能在网站中拥有启动任务。好吧,也许这会帮助其他人:-)

【讨论】:

  • 问题是关于 Azure 网站,而不是 Azure WebRole! Azure 网站中没有启动任务,GAC 中也没有选项!
【解决方案3】:

因此,您需要将 Idendity 程序集显式添加为对 Web 应用项目的引用,然后将它们的“复制本地”属性显式设置为“True”,然后按照此 MSDN forums thread 并使用 this session token handler。通读blog post

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

【讨论】:

  • 感兴趣的是您使用的是 Win 7 还是 8,以及 Visual Studio 的哪个版本。我已按照步骤操作,但仍然收到篡改错误。我认为这可能是由 Win8 引起的 .net 4.5 问题
  • Win7 permium x64, .net 4.0, mvc3.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2014-01-07
相关资源
最近更新 更多