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.