部署故障排除
本页提供了一些有关解决部署到Azure云服务时出现的任何问题的一般指导原则。这些是非常常见的问题,需要加以注意。请务必查看日志,以获取更多信息。
获取SiloUnavailableException
在尝试初始化客户端之前,首先检查并确保实际启动了silo。有时silo需要很长时间才能启动,因此尝试多次初始化客户端是有益的。如果它仍然抛出异常,那么silo可能会有另一个问题。
检查silo配置,并确保silo正常启动。
常见连接字符串问题
- 部署到Azure时,使用的是本地连接字符串——网站将无法连接
- 对silo和前端使用不同的连接字符串(Web和工作者角色)——网站将无法初始化客户端,因为它无法连接到silo
可以在Azure门户中,检查连接字符串配置。如果未正确设置连接字符串,日志可能无法正确显示。
不正确地修改配置文件
确保在ServiceDefinition.csdef文件中配置了正确的端点,否则部署将无法正常工作。它会给出错误消息,说它无法获取端点信息。
缺少日志
确保正确设置连接字符串。
Web角色中的Web.config文件,或者工作者角色中的app.config文件,可能修改的不正确。这些文件中的版本不正确,可能会导致部署问题。处理更新时要小心。
版本问题
确保在解决方案中的每个项目中,使用相同版本的Orleans。不这样做,会导致工作者角色回收。查看日志以获取更多信息。Visual Studio在部署历史记录中提供了一些silo启动时的错误消息。
角色保持回收
- 检查所有相应的Orleans程序集在解决方案中是否存在,并将“复制到本地”设置为True。
- 检查日志以查看初始化时是否存在未处理的异常。
- 确保连接字符串正确。
- 有关详细信息,请查看Azure云服务的疑难解答页面。
如何检查日志
- 使用Visual Studio中的云浏览器,导航到存储帐户中的相应的存储表或blob。WADLogsTable是查看日志的不错的切入点。
- 您可能只记录错误。如果还需要信息日志,则需要修改配置,以设置日志记录严重性级别。
程序化配置:
- 创建
ClusterConfiguration
对象时,请设置config.Defaults.DefaultTraceLevel = Severity.Info
。 - 创建
ClientConfiguration
对象时,请设置config.DefaultTraceLevel = Severity.Info
。
声明性配置:
- 在
OrleansConfiguration.xml
和/或ClientConfiguration.xml
文件中,添加<Tracing DefaultTraceLevel="Info"/>
。
在Web和工作者角色的diagnostics.wadcfgx
文件中,请确保将Logs
元素中的scheduledTransferLogLevelFilter
属性,设置为Information
,因为这是一个额外的跟踪筛选层,用于定义将哪些跟踪发送到Azure存储中的WADLogsTable
。
您可以在“配置指南”中找到有关此内容的更多信息。
与ASP.NET的兼容性
ASP.NET中包含的Razor视图引擎,使用与Orleans相同的代码生成程序集(Microsoft.CodeAnalysis
和Microsoft.CodeAnalysis.CSharp
)。这可能会在运行时出现版本兼容性问题。
若要解决此问题,请尝试将Microsoft.CodeDom.Providers.DotNetCompilerPlatform
(这是ASP.NET用于包含上述程序集的NuGet包)升级到最新版本,并设置绑定重定向,如下所示:
<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>