Azure WebJobs ServiceBus returns 异常:在授权上下文中发现 2 个 DNS 声明

Azure WebJobs ServiceBus returns Exception: found 2 DNS claims in authorization context

我正在尝试使用 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 4.6.1 降级到 4.6 似乎可以防止问题的发生。

标记为解决方案的答案不是解决方案,这是一个拙劣的工作。 在 .Net Framework 4.6.1 中使用它的解决方案是在 App.config:

中添加 rutime 块
<AppContextSwitchOverrides value="Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate=true" />

阅读这篇文章Mitigation: X509CertificiateClaimSet.FindClaims Method

非常重要 目前 Azure WebApps / WebJob 等不支持 4.6.1 我会在此处注明何时(2016 年 1 月 21 日说)。

这意味着,您可以使用 4.6.1 开发 Web 作业应用程序,但是当您将其推送到 Azure 时,您会看到类似 Job failed due to exit code -2146232576

的异常

1月29日微软发布NuGet包3.1.3版本WindowsAzure.ServiceBus.

来自发行说明:

• 一般:.Net 4.6.1+ 兼容性修复。修复自定义 DNS IdentityVerifier,以便我们接受 WIF

返回的多个 DNS 声明

升级包解决了我们的问题。

今天,我 运行 陷入了这个问题,但对此一无所知。最后,我决定升级我正在使用的所有 Azure nuget 包(包括 webjobs、servicebus ...)和 BOOM!有用。希望以后有人遇到这个问题会有所帮助

如上面 中所述,下面的代码片段可以解决问题

<runtime>
    ...
    <AppContextSwitchOverrides value="Switch.System.DisableMultipleDNSEntriesInSANCertificate=true" />
    ...
<runtime>

但是 请小心将其添加到您的解决方案 中正确的项目!将其添加到包含 Azure 代码和 Azure 引用的项目中。

Microsoft 发布了一个新程序包(使用新名称)来解决此问题。所以...

  • 删除 Microsoft.AspNet.SignalR.ServiceBus 包,
  • 安装 Microsoft.AspNet.SignalR.ServiceBus3 包,
  • 升级 WindowsAzure.ServiceBus 包。

更多信息在这里:https://github.com/SignalR/SignalR/issues/3548#issuecomment-296326048

对我来说,在我将 .NET Framework 从 4.5.2 更新到 4.7 后它开始失败 我所做的就是将 Nuget 包 WindowsAzure.ServiceBus 更新为 5.2.0