microsoft - porta azure
Azure WebJobs ServiceBus devuelve Excepción: se encontraron 2 reclamaciones de DNS en el contexto de autorización (6)
Estoy tratando de leer un mensaje de una cola de Azure ServiceBus usando un Azure WebJob, pero es una excepción:
Unhandled Exception: System.InvalidOperationException: Found 2 DNS claims in authorization context.
He establecido las cadenas de conexión correctas llamadas "AzureWebJobsServiceBus", "AzureWebJobsDashboard" y "AzureWebJobsStorage"
El código del programa WebJob se ha actualizado para usar JobHostConfiguration:
class Program
{
static void Main()
{
var config = new JobHostConfiguration();
config.UseServiceBus();
var host = new JobHost(config);
host.RunAndBlock();
}
}
Y el método de trabajo real
public class Functions
{
public async static Task ServiceBusResizeRequest(
[ServiceBusTrigger("blah")] string message,
TextWriter log
)
{
await log.WriteLineAsync("got message " + message);
}
}
Puedo crear y escribir en la cola con éxito a través de una aplicación de consola separada.
Pero cuando ejecuto la aplicación webjob, lanza esa excepción.
¿Algunas ideas?
EDITAR: Usando .net 4.6.1
Como se describe en esta respuesta anterior, el fragmento de abajo hace el truco
<runtime>
...
<AppContextSwitchOverrides value="Switch.System.DisableMultipleDNSEntriesInSANCertificate=true" />
...
<runtime>
¡PERO tenga cuidado de agregarlo al proyecto correcto en su solución ! Agréguelo al proyecto que contiene el código de Azure y las referencias de Azure.
El 29 de enero, Microsoft lanzó la versión 3.1.3 del paquete NuGet WindowsAzure.ServiceBus .
De las notas de publicación:
• General: corrección de compatibilidad con .Net 4.6.1+. Corrección del identificador de identidad de DNS personalizado para que podamos cumplir con múltiples reclamaciones de DNS devueltas por WIF
Actualizar el paquete solucionó el problema para nosotros.
Hoy, me encontré con este problema y no tenía idea de ello. Finalmente, decidí actualizar todos los paquetes de nuget de Azure que estoy usando (incluidos webjobs, servicebus ...) y BOOM! funciona. Con suerte, ayudará si alguien se encuentra con este problema en el futuro.
La degradación de .net 4.6.1 a 4.6 parece evitar que ocurra el problema.
La respuesta marcada como solución, no es la solución, es un trabajo fallido. La solución para usarlo en .Net Framework 4.6.1 es agregar el bloque de rutime en App.config:
<AppContextSwitchOverrides value="Switch.System.IdentityModel.DisableMultipleDNSEntriesInSANCertificate=true" />
Lea este artículo Mitigación: X509CertificiateClaimSet.FindClaims Method
Muy IMPORTANTE, por ahora Azure WebApps / WebJob, etc., no es compatible con 4.6.1. Notaré aquí cuándo (según el 21 de enero de 2016).
Esto significa que puede desarrollar una aplicación de trabajo web con 4.6.1, pero cuando lo empuja a Azure, puede ver excepciones como el Job failed due to exit code -2146232576
Microsoft lanzó un nuevo paquete (con un nuevo nombre) para solucionar este problema. Asi que ...
- eliminar el paquete
Microsoft.AspNet.SignalR.ServiceBus
, - instale el paquete
Microsoft.AspNet.SignalR.ServiceBus3
lugar, y - actualizar el paquete
WindowsAzure.ServiceBus
Más información aquí: https://github.com/SignalR/SignalR/issues/3548#issuecomment-296326048