Azure 工作者角色 OnRun() 方法之前出了啥问题?

Posted

技术标签:

【中文标题】Azure 工作者角色 OnRun() 方法之前出了啥问题?【英文标题】:Azure Worker Role What went wrong before OnRun() method?Azure 工作者角色 OnRun() 方法之前出了什么问题? 【发布时间】:2014-09-03 05:26:51 【问题描述】:

我突然开始在我的工作角色中遇到 key not found 错误。

配置缺少必需的信息。确保财产 “端点”被定义为 “appSettings”中的“Microsoft.ServiceBus.ConnectionString”键 部分,或 Windows Azure 配置设置。

我尝试过的:

云配置中存在设置名称Microsoft.ServiceBus.ConnectionString

<Role name="MyWorkerRole">
<ConfigurationSettings>
  <Setting name="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://mysevicebus.servicebus.windows.net />

服务定义文件。

<ConfigurationSettings>   <Setting name="Microsoft.ServiceBus.ConnectionString" />

Microsoft.WindowsAzure.ConfigurationManager 的 Package.Config 条目指向正确的版本 2.0.3

App.Config:运行时 -> AssemblyBinding -> AzureServiceRuntimeServiceBusAzureConfiguration 包的 DependentAssembly 是正确的。

不知道还有什么要调查的。你能帮忙吗?

附:异常在OnStart() 方法之后抛出,就在调用 Run() 方法之前。

【问题讨论】:

您尝试在本地运行吗?例如,在您的 OnStart() 方法上放置一个 try/catch 并将其记录到 Sql 数据库中。 @ThiagoCustodio 是的,我仅在本地收到此错误。将代码放入 try catch 块后,我得到了这个异常。 当你在本地得到这个异常时,你可以调试它,对吧?它似乎是一个你试图实例化的对象。可能您的“ServiceConfiguration.Cloud.cscfg”文件和“ServiceConfiguration.Local.cscfg”不同。也许您在“ServiceConfiguration.Local.cscfg”文件中缺少配置设置 除了 try catch 块之外,我还可以通过 Debug -> Exceptions -> Check "Thrown" on CLR Exceptions 获得它。这将告诉调试器在某些未处理的情况下暂停,就好像它是一个 catch 块一样。我发现这对于抢先解决我的代码库中的问题非常有用。即正在发生的错误,没有破坏应用程序,但没有人看到它们。 【参考方案1】:

您是否尝试添加 SharedAccessKey 和 RootManagedSharedAccessKey?上面演示的应用程序代码中缺少它们。我在角色的应用程序设置以及服务配置中都有这个。

<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yourSBname.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=KeyFromPortal" />

【讨论】:

以上是关于Azure 工作者角色 OnRun() 方法之前出了啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

全新Microsoft Azure认证已开启|基于工作角色认证,考证更高效!

Azure 云服务工作者角色崩溃和不健康

Azure 辅助角色未运行?

Azure 中的辅助角色工作?

Azure 自动缩放在本地工作,但在部署时不工作

Azure 网站抱怨角色环境。初始化失败