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 -> AzureServiceRuntime
、ServiceBus
和 AzureConfiguration
包的 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() 方法之前出了啥问题?的主要内容,如果未能解决你的问题,请参考以下文章