3

我有 ASP webrole,在没有 ACS 的情况下也能很好地工作。当我将 ACS 添加到我的应用程序时,它在本地运行良好。但是,当我将它部署到云时,它似乎并没有打包 Microsoft.IdentityModel.dll。

现在我做了以下事情:

  1. 确保在“Microsoft.IdentityModel”的复制 local = true 的引用下
  2. 累了重新添加 STS 引用。3.右键>>添加引用>>Microsoft.IdentityModel.dll

这过去也可以正常工作,而无需在实际服务器上安装 WIF。

有任何想法吗?

4

3 回答 3

2

请查看这些资源,这可能会帮助您解决问题:

希望这可以帮助!

于 2012-02-09T09:26:30.733 回答
1

我设法找到导致问题的原因。所以我在同一个解决方案中有 1 个 WebRole 和 1 个 WCF 角色。一旦我尝试使用 WCF 服务,ACS 一直运行良好,直到应用程序中的三个步骤。Azure 为每个角色创建了一个 VM,这让我感到很困惑。所以这很重要,因为直到我尝试使用 WCF 服务时它的身份验证都很好。WebRole 中没有缺少该程序集,而是它创建的 WCF VM 中缺少该程序集。因此,我确保在该 VM 上也安装了 WIF,并且成功了。我仍然不明白 100% 为什么我必须在 WCF VM 上安装 WIF,但最终是什么导致了我的问题。

于 2012-06-01T08:32:57.677 回答
0

这篇文章中“使用 Windows 更新包部分”下描述了唯一对我有用的东西(但我必须对启动脚本进行一些小改动)

基本上,我必须创建一个启动任务,它执行我在我的 Web 项目下创建的批处理文件 InstallWif.cmd。我还下载了 WIF 安装包 (Windows6.0-KB974405-x64.msu) 并将其包含到我的 Web 项目中。我将这两个文件的“复制到输出目录”属性设置为“始终复制” 。

InstallWif.cmd 包含以下脚本

@echo off
sc config wuauserv start= demand
wusa.exe "%~dp0Windows6.0-KB974405-x64.msu" /quiet /norestart
sc config wuauserv start= disabled
exit /b 0

请注意,我必须使用 Windows6.0-KB974405-x64.msu 而不是 Windows6.1-KB974405-x64.msu。我发现通过使用与 Azure 的远程桌面连接登录到 Azure VM 实例并尝试在此处手动安装此版本,无法安装 6.1 版本。

启动任务在 ServiceDefinition.csdef 文件中定义,如下所示

 <Startup>
   <Task commandLine="InstallWif.cmd" executionContext="elevated" taskType="simple" />
 </Startup> 
于 2012-03-01T20:19:36.470 回答