导出 (0) 打印
全部展开

启动失败的角色的疑难解答

更新时间: 2014年11月

适用范围:Azure SDK 1.0 和更高版本

DLL 或程序集丢失可能导致出现未响应的角色以及在“正在初始化-忙-正在停止”状态之间循环的角色。

症状:DLL 或程序集丢失的症状可能为:

  • 角色实例在“正在初始化/忙/正在停止”之间循环

  • 角色实例已转为“就绪”状态,但在导航到 Web 应用程序时未显示相应页面

解决方法:若要调查这些问题,可采用三种推荐的方法。

当导航到在 Web 角色中部署的网站,且浏览器显示类似于下面的服务器错误时:

“/”应用程序中的服务器错误。

可通过将 Web 角色的 web.config 配置为将自定义错误模式设置为“关闭”并重新部署服务,来查看更完整的错误。

在不使用远程桌面的情况下查看更完整的错误:

  1. 在 Visual Studio 中打开解决方案。

  2. 在“解决方案资源管理器”中,找到 web.config 文件并打开它。

  3. 在 web.config 文件中,找到 system.web 部分并添加以下行:

    <customErrors mode="Off" />
    
  4. 保存该文件。

  5. 重新打包并重新部署服务。

重新部署服务后,你将看到下面的错误,其中包含丢失的程序集或 DLL 的名称。

可使用远程桌面来访问角色并远程查看更为完整的错误。

可使用远程桌面按以下步骤来查看错误:

  1. 确保安装了 Azure SDK 1.3 或更高版本。

  2. 在使用 Visual Studio 部署解决方案的过程中,选择“配置远程桌面连接…”。有关配置远程桌面连接的更多信息,请参见将远程桌面与 Azure 角色一起使用

  3. 在 Microsoft Azure 管理门户中,当实例显示“就绪”状态时,在其中一个角色实例上单击。

  4. 在功能区的“远程访问”区域中单击“连接”图标

  5. 使用在远程桌面配置期间指定的凭据登录到虚拟机。

  6. 打开命令提示符。

  7. 键入 IPconfig。

  8. 记录 IPV4 地址值。

  9. 打开 Internet Explorer。

  10. 键入 Web 应用程序的地址和名称。例如,http://<IPV4 地址>/default.aspx。

导航到网站将返回更明确的错误消息。

  • “/”应用程序中的服务器错误

  • 说明:执行当前 web 请求期间发生未处理的异常。有关错误及其在代码中的来源的更多信息,请查看堆栈跟踪。

  • 异常详细信息:System.IO.FIleNotFoundException:未能加载文件或程序集“Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

例如:

“/”应用程序中的显式服务器错误

你可使用 Azure Microsoft Azure 计算模拟器来诊断丢失依赖项和 web.config 错误,并纠正这些错误。

为了在使用此诊断方法时获得最佳结果,你应使用包含 Windows 的干净安装的计算机或虚拟机。若要以最佳效果模拟 Azure 环境,应使用 Windows Server 2008 R2 x64。

  1. http://www.microsoft.com/windowsazure/windowsazuresdk+tools/ 中安装 Azure SDK 的独立版本。

  2. 在开发计算机上生成云服务项目。

  3. 在 Windows 资源管理器中,导航到云服务项目的 bin\debug 文件夹。

  4. 将 .csx 文件夹和 .cscfg 文件复制到你用来调试问题的计算机。

  5. 在干净计算机上,打开 Azure SDK 命令提示符并键入 csrun.exe /devstore:start

  6. 在命令提示符处,键入 run csrun <path to .csx folder> <path to .cscfg file> /launchBrowser

  7. 角色启动后,你便会在 Internet Explorer 中看到详细的错误信息。你还可使用标准的 Windows 故障排除工具来进一步诊断问题。

对于使用 .NET Framework 4 的辅助角色和 Web 角色,你可以使用 IntelliTraceMicrosoft Visual Studio Ultimate 中提供了该工具。

请按照以下步骤操作来部署启用了 IntelliTrace 的服务:

  1. 确认安装了 Azure SDK 1.3 或更高版本。

  2. 使用 Visual Studio 部署解决方案。在部署过程中,选中“为 .NET 4 角色启用 IntelliTrace”复选框。

  3. 实例启动后,打开“服务器资源管理器”。



  4. 展开“Windows Azure 计算”节点并查找部署。

  5. 展开部署,直至看到角色实例。

    右键单击其中一个实例。

  6. 选择“查看 IntelliTrace 日志”。这将打开“IntelliTrace 摘要”。

  7. 查找摘要的异常部分。如果存在异常,则它会被标记为“异常数据”。



  8. 展开“异常数据”并查找类似如下所示的 System.IO.FileNotFoundException 错误:

    异常数据,缺少文件或程序集

若要纠正丢失 DLL 和程序集错误,请按照以下步骤进行操作:

  1. 在 Visual Studio 中打开解决方案。

  2. 在“解决方案资源管理器”中,打开“引用”文件夹。

  3. 单击错误中标识的程序集。

  4. 在“属性”窗格中,找到“复制本地”属性,并将其值设置为 True

  5. 重新部署托管服务。

确认已纠正所有错误后,便能在不选中“为 .NET 4 角色启用 IntelliTrace”设置的情况下部署服务。

显示:
© 2014 Microsoft