我正在尝试使用Azure WebJob从Azure ServiceBus队列中读取消息,但它正在抛出异常:
Unhandled Exception: System.InvalidOperationException: Found 2 DNS claims in authorization context.
我已经设置了名为"AzureWebJobsServiceBus","AzureWebJobsDashboard"和"AzureWebJobsStorage"的正确连接字符串
WebJob程序代码已更新为使用JobHostConfiguration:
class Program { static void Main() { var config = new JobHostConfiguration(); config.UseServiceBus(); var host = new JobHost(config); host.RunAndBlock(); } }
而实际的Job方法
public class Functions { public async static Task ServiceBusResizeRequest( [ServiceBusTrigger("blah")] string message, TextWriter log ) { await log.WriteLineAsync("got message " + message); } }
我可以通过单独的控制台应用程序成功创建和写入队列.
但是当我运行webjob应用程序时,它会抛出异常.
有任何想法吗?
编辑:使用.net 4.6.1
标记为解决方案的答案不是解决方案,而是一项拙劣的工作.在.Net Framework 4.6.1中使用它的解决方案是在App.config中添加rutime块:
阅读本文缓解:X509CertificiateClaimSet.FindClaims方法
非常重要的是现在Azure WebApps/WebJob等,不支持4.6.1我会在这里注意(2016年1月21日说).
这意味着,您可以使用4.6.1开发Web作业应用程序,但是当您将其推送到Azure时,您可以看到类似的异常 Job failed due to exit code -2146232576
1月29日微软发布了NuGet包WindowsAzure.ServiceBus 3.1.3版.
从发行说明:
•常规:.Net 4.6.1+兼容性修补程序.修复自定义DNS IdentityVerifier,以便我们兑现WIF返回的多个DNS声明
升级包解决了我们的问题.