1

我开发了一个自定义应用程序,它能够使用 CRM Web 服务并从自定义 .NET 页面在 CRM 中执行 Windows Live Id 身份验证、创建、读取和更新操作。当我在 Visual Studio 2010 中调试应用程序时,它运行得非常好,但是当我部署相同的应用程序并尝试对其进行身份验证时,它会显示以下错误:

“无法加载文件或程序集 'Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, 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 添加到我的项目解决方案中。

4

3 回答 3

3

出色地,

您可以使用 Sandrino 的建议,但也可以使用这个 powershell script。我在几个项目中使用它并且效果很好。它还自动识别 Windows 版本(因为对于 Azure 来宾操作系统系列 1.xx,您必须使用 Windows6.0-xxxxx,而对于来宾操作系统系列 2.xx,您必须使用 Windows6.1-xxx 版本的 KB 更新)。

您可以在一个非常简单的启动任务中执行该 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>

希望这也有帮助;)

于 2012-04-18T09:18:08.080 回答
2

“无法将 RegisterDLL.cmd 添加到我的项目解决方案”是什么意思?在 Visual Studio 中,只需按照以下步骤操作:

  1. 右键单击您的项目
  2. 选择添加 > 新项目 > 文本文件
  3. 输入以下代码(来自博客文章):

    @echo off
    sc config wuauserv start= demand
    wusa.exe "Windows6.1-KB974405-x64.msu" /quiet /norestart
    sc config wuauserv start= disabled
    exit /b 0
    
  4. 将文件重命名为 RegisterDLL.cmd

  5. 在属性中,将复制到输出目录设置为始终复制
  6. 转到文件 > 另存为。在 Save 按钮上,单击小箭头并选择 Save with Encoding
  7. 选择Unicode(不带签名的 UTF-8) - 代码页 65001

这应该足以拥有一个工作文件。现在按照指南的其余部分重新部署您的应用程序。

于 2012-04-18T09:08:44.063 回答
1

如果要将其部署到 Windows Azure,请确保在部署到 Azure 时将 Microsoft.IdentityModel 上的“本地复制”设置为 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

这应该有帮助...

于 2012-04-18T09:15:45.047 回答