对部署进行故障排除

本页提供一般指南,用于排查部署期间发生的问题,尤其是 Azure 云服务。 这些都是要注意的常见问题。 请查看日志以获取更多详细信息。

SiloUnavailableException

首先,请确保接收器在尝试初始化客户端之前启动。 有时孤岛需要很长时间才能启动,因此尝试多次初始化客户端可能很有用。 如果它仍然引发异常,则集群可能存在另一个问题。

检查筒仓配置并确保筒仓正确启动。

常见的连接字符串问题

  • 部署到 Azure 时使用本地连接字符串:网站无法连接。
  • 对存储体和前端(Web 角色和辅助角色)使用不同的连接字符串:网站无法初始化客户端,因为它无法连接到存储体。

在 Azure 门户中检查连接字符串配置。 如果未正确设置连接字符串,则日志可能无法正确显示。

未正确修改的配置文件

确保在 ServiceDefinition.csdef 文件中配置正确的终结点;否则,部署将不起作用。 指出无法获取终结点信息的错误将发生。

缺少日志

确保正确设置连接字符串。

可能是 Web 角色中的 Web.config 文件或辅助角色中的 app.config 文件修改不当。 这些文件中的版本不正确可能会导致部署问题。 处理更新时要小心。

版本问题

确保解决方案中的每个项目都使用相同的版本 Orleans 。 使用不同的版本可能会导致工作角色回收。 检查日志以了解详细信息。 Visual Studio 会在部署历史记录中提供一些 silo 启动错误消息。

角色不断回收

  • 验证解决方案中是否包含所有适当的 Orleans 程序集,并将 “复制本地 ”设置为 True
  • 在初始化期间检查日志中是否有未经处理的异常。
  • 确保连接字符串正确。
  • 有关详细信息,请参阅 Azure 云服务故障排除页。

如何查看日志

  • 使用 Visual Studio 中的 Cloud Explorer 导航到存储帐户中的相应存储表或 Blob。

检查日志的一个很好的起点是WADLogsTable

  • 只能记录错误。 如果需要信息日志,请修改配置以设置日志记录严重性级别。

编程配置:

声明性配置:

  • <Tracing DefaultTraceLevel="Info" /> 添加到 OrleansConfiguration.xml 和/或 ClientConfiguration.xml 文件中。

在 Web 角色和辅助角色的 diagnostics.wadcfgx 文件中,确保 scheduledTransferLogLevelFilter 元素中的 Logs 属性设置为 Information。 此设置充当一个附加的跟踪筛选层,用于定义将哪些跟踪发送到 WADLogsTable Azure 存储中。

配置指南中查找有关此内容的详细信息。

与 ASP.NET 的兼容性

ASP.NET 中包含的 Razor 视图引擎使用与 Orleans、Microsoft.CodeAnalysisMicrosoft.CodeAnalysis.CSharp 相同的代码生成程序集。 这可能会在运行时导致版本兼容性问题。

若要解决此问题,请尝试将(NuGet 包 ASP.NET 用于包括这些程序集)升级到 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 最新版本,并设置如下所示的绑定重定向:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.CodeAnalysis.CSharp"
        publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="1.3.1.0" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="Microsoft.CodeAnalysis"
        publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="1.3.1.0" />
</dependentAssembly>