我开发了一个自定义应用程序,该应用程序能够使用CRM Web服务并执行Windows Live ID身份验证,从自定义.NET页面在CRM中创建,读取和更新操作。当我在Visual Studio 2010中调试应用程序时,它运行绝对正常,但是当我部署同一应用程序并尝试进行身份验证时,它显示以下错误:
"无法加载文件或程序集'Microsoft.IdentityModel, Version=3.5.0.0, Culture=中性, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。
我只是想知道如何使用启动任务安装 Microsoft.IdentityModel 程序集。我按照以下链接中的一些步骤操作:
http://blogs.msdn.com/b/sriharsha/archive/2012/04/07/windows-azure-unable-to-find-assembly-microsoft-identitymodel.aspx
但是无法将RegisterDLL.cmd添加到我的项目解决方案中。
嗯,
你可以使用Sandrino的建议,但你也可以使用这个Powershell脚本。我在几个项目中使用它,它工作正常。它还会自动识别 Windows 版本(因为对于 Azure 来宾操作系统系列 1.xx,您必须使用 Windows6.0-xxxxx,对于来宾操作系统系列 2.xx,您必须使用 Windows 6.1-xxx 版本的知识库更新)。
您可以在非常简单的启动任务中执行该 powershell 脚本。创建一个 setup.cmd 文件,其中包含以下内容:
@echo off
powershell -command "Set-ExecutionPolicy Unrestricted" 2>> err.out
powershell .Install-WIF-OnAzure.ps1 2>> err.out
并将其作为简单的启动任务运行:
<WebRole name="AzureAndWif" vmsize="Small">
<Startup>
<Task commandLine="setup.cmd" executionContext="elevated" />
</Startup>
...
</WebRole>
希望这也有助于;)
"无法将 RegisterDLL.cmd 添加到我的项目解决方案"是什么意思?在Visual Studio中,只需按照以下步骤操作:
- 右键单击您的项目
- 选择">文本文件添加新项目>
-
输入以下代码(来自博客文章):
@echo off sc config wuauserv start= demand wusa.exe "Windows6.1-KB974405-x64.msu" /quiet /norestart sc config wuauserv start= disabled exit /b 0
-
将文件重命名为 RegisterDLL.cmd
- 在属性中,将"复制到输出目录"设置为"始终复制"
- 转到文件>另存为。在保存按钮上,单击小箭头并选择使用编码保存
- 选择 Unicode(不带签名的 UTF-8) - 代码页 65001
这应该足以拥有一个工作文件。现在,按照指南的其余部分重新部署应用程序。
将其部署到Windows Azure,请确保在部署到Azure时在Microsoft.IdentityModel上将"copy local"设置为true。
-----------**更新**----------------------------
云提示 #9-使用启动任务将 Microsoft.IdentityModel 添加到 GAC
http://blogs.msdn.com/b/benko/archive/2012/04/07/cloud-tip-9-add-microsoft-identitymodel-to-the-gac-with-a-startup-task.aspx
这应该有帮助...