此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开

导致角色回收的常见问题

更新时间: 2014年11月

本节列出了导致出现部署问题的一些常见原因,并提供了故障排除技巧以帮助您解决这些问题。当角色实例无法启动或在“正在初始化”、“忙”和“正在停止”状态之间循环时,则表示应用程序存在问题。

如果应用程序中的角色依赖于不属于 .NET Framework 或 Windows Azure 托管库的一部分的任何程序集,则您必须将该程序集显式包含在应用程序包中。请记住,默认情况下,其他 Microsoft 框架在 Windows Azure 上不可用。如果您的角色依赖于此类框架,则必须将这些程序集添加到应用程序包中。

在生成并打包应用程序之前,请验证以下内容:

  • 是否为项目中不属于 Windows Azure SDK 或 .NET Framework 的一部分的所有引用程序集将 Copy Local 属性设置为 True(如果使用的是 Visual Studio)。如果未使用 Visual Studio,则必须在调用 CSPack 时指定引用程序集的位置。有关使用 CSPack 的更多信息,请参见 CSPack 命令行工具

  • web.config 文件不引用 compilation 元素中任何未使用的程序集,并且所有引用都指向以下程序集:属于 .NET Framework 或 Windows Azure SDK 的一部分的程序集、在 Visual Studio 中将其 Copy Local 属性设置为 True 的程序集或通过运行 CSPack 包含在应用程序包中的程序集。

  • 将每个 .cshtml 文件的 Build Action 设置为 Content。这可确保文件正确显示在程序包中,并允许其他引用的文件显示在程序包中。

Windows Azure 是一个 64 位环境。因此,为 32 位目标编译的 .NET 程序集将无法在 Windows Azure 上运行。

RoleEntryPoint 类的方法引发的所有异常(包括 OnStartOnStopRun)是未处理的异常。如果这些方法中的某一个发生未处理的异常,则角色将重用。如果反复重用角色,则它每次尝试启动时都可能会引发未处理的异常。

Run 方法应无限期运行。如果您的代码重写 Run 方法,则该方法将无限期地处于休眠状态。如果 Run 方法返回,则角色将重用。

如果应用程序使用 Windows Azure 诊断,则服务配置文件必须指定 DiagnosticsConnectionString 配置设置。此设置应指定与 Windows Azure 中的存储帐户的 HTTPS 连接。

若要在将应用程序包部署到 Windows Azure 之前确保 DiagnosticsConnectionString 设置正确,请验证以下内容:

  • DiagnosticsConnectionString 设置是否指向 Windows Azure 中的有效存储帐户。默认情况下,此设置指向模拟存储帐户,因此您必须先显式更改此设置,然后部署应用程序包。如果不更改此设置,则在角色实例尝试启动诊断监视器时会引发异常。这可能会导致角色实例无限期重用。

  • 按以下格式指定连接字符串(必须将协议指定为 HTTPS)。将 MyAccountName 替换为存储帐户的名称,并将 MyAccountKey 替换为访问密钥:

    DefaultEndpointsProtocol=https;AccountName=MyAccountName;AccountKey=MyAccountKey
    
    有关使用连接字符串的更多信息,请参见How to Configure Connection Strings

如果使用 Windows Azure Tools for Microsoft Visual Studio 来开发应用程序,则可以使用属性页来设置此值。有关使用 Visual Studio 设置配置值的更多信息,请参见配置 Azure 项目

若要在 SSL 下运行 Web 角色,则必须确保导出的管理证书包含私钥。如果使用 Windows 证书管理器来导出证书,请确保选择“是,导出私钥”选项。该证书必须以 PFX 格式导出,此格式是当前支持的唯一格式。

另请参阅

显示:
© 2015 Microsoft