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

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

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, оно выдает это исключение.

Любые идеи?

EDIT: Использование .net 4.6.1

Ответы

Ответ 1

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

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

• Общие сведения:.Net 4.6.1+ совместимость. Фиксирование пользовательского идентификатора DNS IdentityVerifier, чтобы мы соблюдали многочисленные претензии DNS, возвращенные WIF

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

Ответ 2

Ответ, помеченный как решение, не является решением, это неудачная работа. Решение использовать его в .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

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

Корпорация Майкрософт выпустила новый пакет (под новым именем), чтобы устранить эту проблему. Итак...

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

Дополнительная информация здесь: https://github.com/SignalR/SignalR/issues/3548#issuecomment-296326048

Ответ 7

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