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

帅比萌擦擦* 提交于 2019-12-18 12:53:28

问题


I'm trying to read a message from an Azure ServiceBus queue using an Azure WebJob but it's throwing and exception:

Unhandled Exception: System.InvalidOperationException: Found 2 DNS claims in authorization context.

I've set the correct connection strings named "AzureWebJobsServiceBus", "AzureWebJobsDashboard" and "AzureWebJobsStorage"

The WebJob Program code has been updated to use JobHostConfiguration:

class Program
{
    static void Main()
    {
        var config = new JobHostConfiguration();
        config.UseServiceBus();

        var host = new JobHost(config);
        host.RunAndBlock();
    }
}

And the actual Job method

public class Functions
{
    public async static Task ServiceBusResizeRequest(
         [ServiceBusTrigger("blah")] string message,             
         TextWriter log
         )
    {            
        await log.WriteLineAsync("got message " + message);
    }

}

I can successfully create and write to the queue via a separate console application.

But when I run the webjob application, it throws that exception.

Any ideas?

EDIT: Using .net 4.6.1


回答1:


January 29th Microsoft released version 3.1.3 of the NuGet package WindowsAzure.ServiceBus.

From the release notes:

• General: .Net 4.6.1+ compatibility fix. Fixing custom DNS IdentityVerifier so that we honor multiple DNS claims returned by WIF

Upgrading the package solved the problem for us.




回答2:


The answer marked as solution, is not the solution, it is a botched job. The solution to use it in .Net Framework 4.6.1 is to add in the rutime block in App.config:

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

Read this article Mitigation: X509CertificiateClaimSet.FindClaims Method

Very IMPORTANT for now Azure WebApps / WebJob etc, doesn't support 4.6.1 I will note here when (said at jan 21, 2016).

It means, that you can develop a web job application with 4.6.1, but when you push it to Azure, you can see exceptions like Job failed due to exit code -2146232576




回答3:


As outlined in this answer above, the snippet below does the trick

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

BUT be carefull to add it to the correct project in your solution! Add it to the project containing the Azure code and Azure references.




回答4:


Downgrading from .net 4.6.1 to 4.6 seems to prevent the issue from occurring.




回答5:


Today, I ran into this issue and had no idea about it. Finally, I decided to upgrade all the Azure nuget packages that I am using (including webjobs, servicebus ...) and BOOM! it WORKS. Hopefully, it will help if anyone runs into this issue in the future




回答6:


Microsoft released a new package (under a new name) to fix this issue. So ...

  • remove the Microsoft.AspNet.SignalR.ServiceBus package,
  • install the Microsoft.AspNet.SignalR.ServiceBus3 package instead, and
  • upgrade the WindowsAzure.ServiceBus package.

More info here: https://github.com/SignalR/SignalR/issues/3548#issuecomment-296326048




回答7:


For me it started failing after I updated .NET Framework from 4.5.2 to 4.7 All I did to fix it was update the Nuget Package WindowsAzure.ServiceBus to 5.2.0



来源:https://stackoverflow.com/questions/34329056/azure-webjobs-servicebus-returns-exception-found-2-dns-claims-in-authorization

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!