2

我有一个 WebApi 项目,它包装了 Dynamics CRM Online Web 服务并提供了一个 REST api。我有一个简单的控制器,可以从 CRM 获取一些联系人并将它们返回给调用者。

当我在本地模拟器中运行它时,一切正常。但是,当我将项目部署到 Azure 时,我可以访问主页,但控制器都返回 http 500 错误。为什么会发生这种情况?以及如何进行故障排除以获取更多详细信息?

更新

问题在于在 Azure 中运行 Web 角色的 Server 2012 实例上缺少 Microsoft.IdentityModel.dll。我通过在 RDP 中打开 Web 角色实例、安装 Fiddler 并从 Fiddler 向本地 IIS 服务器发出请求来发现这一点。它以详细的错误响应。

现在我的问题是弄清楚如何在 Windows Azure Web 角色上启用 IdentityModel。您应该能够通过 Server 2012 添加角色和功能向导添加它,但它完全锁定在 Web 角色上。您不能选中任何尚未选中的框。这甚至可能吗?

4

1 回答 1

1

问题是当 Web 角色本身不存在时,它可以访问 Windows Identity Foundation。Marc Schweigert 在此处提供了执行此操作的明确步骤:

http://blogs.msdn.com/b/devkeydet/archive/2013/01/27/crm-online-amp-windows-azure-configuring-single-sign-on-sso.aspx

转到视频的 23:00 标记,您将看到 4 个必要步骤:

  1. 参考 Microsoft.IdentityModel.dll(需要安装 WIF SDK)设置复制本地 = true
  2. 在您的 Web 角色项目中创建 RegisterWIFGAC.cmd
  3. 在调用 RegisterWIFGAC.cmd 的 ServiceDefinition.csdef 中创建启动任务
  4. 将 GacUtil 添加到项目(在启动任务中使用)以在每次 Web 角色启动时将 Microsoft.IdentityModel.dll 放入 GAC)。
于 2013-04-04T14:56:49.023 回答