Windows Azure ACS: 找不到程序集'Microsoft.IdentityModel'。

3
我有一个ASP webrole,在不使用ACS的情况下运作良好。当我向我的应用程序添加ACS时,它在本地运行良好。但是,当我将其部署到云中时,似乎并没有将Microsoft.IdentityModel.dll打包进去。
现在我已经完成了以下工作:
  1. 确保在“Microsoft.IdentityModel”下复制本地 = true。
  2. 尝试重新添加STS引用。
  3. 右键单击>>添加参考>>Microsoft.IdentityModel.dll
以前,这也可以在实际服务器上安装WIF的情况下正常工作。
有什么想法吗?

嗨MAC,你能告诉我你在哪个项目解决方案中添加了你的dll引用吗?我之前遇到过这个问题,在控制台应用程序中使用我的dll引用时也遇到了同样的问题。 - V_B
我正在将引用添加到WebRole解决方案中,该解决方案是一个Web应用程序。 - Rory
3个回答

2

好的,这是一个已知的问题,感谢提供链接。但我仍然无法解决这个问题。这个链接更有帮助,但在那种情况下,虚拟机一直在循环并最终停止了。我的下一步是部署>>>RDP到虚拟机>>并手动运行PowerShell脚本。这确实在虚拟机上安装了WIF,但我仍然收到错误:无法找到程序集'Microsoft.IdentityModel”。arg arg arg..... - Rory
为什么提供的链接没有帮助。我使用了GIT PowerShell脚本来安装WIF,它有效了。你有什么问题? - astaykov

1
我找到了问题的原因。我的解决方案中有一个WebRole和一个WCF角色。在应用程序的后三个步骤中,当我尝试使用WCF服务时,ACS一直正常工作。在某个点上,我意识到Azure为每个角色创建一个VM。这就完全解释了为什么它在我尝试使用WCF服务时认证良好。程序集不是从WebRole中缺失,而是从它所创建的WCF VM中缺失。因此,我确保在该VM上也安装了WIF,然后它就可以工作了。我仍然不完全理解为什么我必须在WCF VM上安装WIF,但最终这就是导致我的问题的原因。

0

对我有效的唯一方法在这个帖子中描述了“使用Windows更新包部分”(但我必须对启动脚本进行一些小修改)

基本上,我不得不创建一个启动任务,执行批处理文件InstallWif.cmd,该文件是我在Web项目下创建的。我还下载并包含了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。我发现6.1版本无法通过远程桌面连接到Azure的Azure VM实例并尝试手动安装此版本。
启动任务在ServiceDefinition.csdef文件中定义如下:
 <Startup>
   <Task commandLine="InstallWif.cmd" executionContext="elevated" taskType="simple" />
 </Startup> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接