Azure WebJobs ServiceBus возвращает Exception: обнаружено 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


comment
Переход с .net 4.6.1 на 4.6, похоже, предотвращает возникновение проблемы. Я оставлю это открытым еще немного, чтобы посмотреть, есть ли у кого-нибудь ответ, почему 4.6.1 не работает.   -  person sf.    schedule 17.12.2015
comment
Что ж, SDK WebJobs нацелен на 4.5. мы скоро выпустим обновление до 4.6, но это может быть проблемой.   -  person mathewc    schedule 17.12.2015
comment
Ура, спасибо. Не осознавал, что цели только 4.5.   -  person sf.    schedule 18.12.2015
comment
Один из вас должен отправить это как ответ, чтобы следующему человеку было легче его найти. :)   -  person Chris Anderson-MSFT    schedule 20.12.2015
comment
@ ChrisAnderson-MSFT Отметим, что у нас есть та же проблема без SDK WebJobs, вызывая служебную шину с помощью обычного SubscriptionClient в 4.6.1. Нам не удалось заставить работать исправление AppContextSwitchOverrides, указанное ниже, ни в Web.config службы, выполняющей вызов, ни в App.config проекта, в котором находится наш клиент служебной шины, но при переходе на более раннюю версию 4.6 проблема была решена.   -  person Jude Fisher    schedule 17.01.2016
comment
Странный. Я отправил записку команде SB.   -  person Chris Anderson-MSFT    schedule 19.01.2016


Ответы (7)


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

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

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

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

person lsmeby    schedule 19.02.2016
comment
версия 3+ WindowsAzure.ServiceBus нарушает работу SignalR github.com/SignalR/SignalR/issues/3548 - person Larry Flewwelling; 14.01.2017

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

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

Прочтите эту статью Устранение: X509CertificiateClaimSet.FindClaims Method

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

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

person Alberto León    schedule 04.01.2016
comment
Была такая же проблема. По какой-то причине этот параметр AppContextSwitchOverrides в конфигурации не помог, поэтому я просто добавил код в конструктор AppContext.SetSwitch (Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate, true); - person Ben; 16.01.2016
comment
Возможно, у вас есть файл контекста в другом проекте. Вы пробовали добавить настройку в app.config приложения, а также в проект с контекстом? - person Alberto León; 16.01.2016
comment
У меня есть проект рабочей роли Azure, и я пытался применить эту конфигурацию к разделу app.config ‹runtime›. - person Ben; 18.01.2016
comment
для нас был обновлен с 4.5.2 до 4.7.2 - это решение решило проблему - person Falco; 19.12.2018

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

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

НО будьте осторожны, чтобы добавить его в правильный проект в своем решении! Добавьте его в проект, содержащий код Azure и ссылки на Azure.

person participant    schedule 12.05.2017

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

person sf.    schedule 21.12.2015

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

person Hung Cao    schedule 11.01.2017

Microsoft выпустила новый пакет (под новым названием) для устранения этой проблемы. Так ...

  • удалить пакет Microsoft.AspNet.SignalR.ServiceBus,
  • вместо этого установите пакет Microsoft.AspNet.SignalR.ServiceBus3 и
  • обновите пакет WindowsAzure.ServiceBus.

Подробнее здесь: https://github.com/SignalR/SignalR/issues/3548#issuecomment-296326048

person Josh M.    schedule 18.05.2017

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

person Bruno Henn    schedule 22.08.2019