ServiceBus Azure WebJobs возвращает исключение: найдено 2 утверждения DNS в контексте авторизации

Я пытаюсь прочитать сообщение из очереди Azure ServiceBus с помощью веб-задания Azure, но оно вызывает исключение:

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();
    }
}

И фактический метод работы

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

6 ответов

Решение

29 января Microsoft выпустила версию 3.1.3 пакета NuGet WindowsAzure.ServiceBus.

Из примечаний к выпуску:

• Общие сведения: исправление совместимости.Net 4.6.1+. Исправление настраиваемого DNS IdentityVerifier, чтобы мы учитывали множественные претензии DNS, возвращенные WIF

Обновление пакета решило проблему для нас.

Ответ, помеченный как решение, не является решением, это неудачная работа. Решение использовать его в.Net Framework 4.6.1 - добавить в блок rutime в App.config:

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

Прочитайте эту статью Смягчение: метод X509CertificiateClaimSet.FindClaims

Очень ВАЖНО на данный момент Azure WebApps / WebJob и т. Д., Не поддерживает 4.6.1. Я отмечу здесь, когда (сказано 21 января 2016 г.).

Это означает, что вы можете разработать веб-приложение для работы с 4.6.1, но когда вы отправляете его в Azure, вы можете увидеть исключения, такие как Job failed due to exit code -2146232576

Как указано в этом ответе выше, фрагмент ниже делает трюк

<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

Сегодня я столкнулся с этой проблемой и понятия не имел об этом. Наконец, я решил обновить все используемые мной пакеты Nuget (включая webjobs, servicebus ...) и BOOM! оно работает. Надеюсь, это поможет, если кто-то столкнется с этой проблемой в будущем

Понижение версии.net 4.6.1 до 4.6, по-видимому, предотвращает возникновение проблемы.

Для меня это начало сбой после того, как я обновил.NET Framework с 4.5.2 до 4.7. Все, что я сделал, чтобы это исправить, - это обновил пакет Nuget WindowsAzure.ServiceBus до 5.2.0.

Другие вопросы по тегам