18

Estoy trabajando en un sitio MVC3, y tengo un problema desconcertante con la membresía ASP.NET. Estoy usando System.Web.Providers 1.0.1 conectado a una base de datos SQL Azure.Membresía ASP.NET: el inicio de sesión funciona localmente, falla en Azure

Como está ahora, el mismo nombre de usuario/contraseña que me registra cuando se ejecuta en el emulador de cómputo falla cuando se ejecuta bajo Azure. Puedo ver que está usando la base de datos correcta, ya que el contador de Intentos de contraseña fallidos en la base de datos de miembros se está actualizando.

+0

No puedo decirle cuál es el problema específico, pero le sugiero que habilite Intellitrace para su implementación. Con Intellitrace habilitado, simplemente implemente el proyecto en la nube, realice un intento de inicio de sesión y luego descargue los registros de Intellitrace. Descubrirá qué tan poderoso y útil es Intellitrace, y estoy seguro de que resolverá el problema mirando las excepciones. – astaykov

+1

Gracias por la sugerencia, pero hasta donde sé, Intellitrace solo es compatible con VS Ultimate, y no estoy seguro de que esté dispuesto a desembolsar $ 12,000 adicionales sobre nuestra suscripción actual a MSDN por algo que puede o puede no resuelve mi problema –

+0

Espera ... dices "bajo el emulador de cómputo", lo que implica que estás usando roles web o roles de trabajador, NO sitios web (es decir, IIS), ¿verdad? ¿Cambia la clave de máquina a continuación y cambia el comportamiento de su emulador de cómputo? –

Respuesta

28

Lo rastreé, gracias a alguna información en this article by David Hoerster. El problema es que el algoritmo de hash de contraseña predeterminado en Azure es diferente de los valores predeterminados de .NET 4.0. Está configurado en SHA1 en Azure, y HMACSHA256 es la nueva configuración estándar en 4.0.

Esto puede solucionarse especificando el tipo de hash explícitamente en web.config. Si decide utilizar un método como HMACSHA256, asegúrese de especificar también una clave de máquina; de lo contrario, se encontrará con problemas similares, ya que la clave del equipo autogenerado será diferente de servidor a servidor.

El elemento de configuración que necesita cambiar es < machinekey> bajo < system.web>:

<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE" 
      validationKey="PUT_VALIDATION_KEY_HERE" 
      decryption="AES" 
      validation="HMACSHA256" /> 

Puede utilizar this machine key generator para generar claves aleatorias en el formato adecuado.

+1

¡Gracias por la referencia! :) –

+1

De nada, si no fuera por ti, no sabría JACSHT :-) –

+1

HAHAHA !!! Eso es hilarante. Necesito promover ese acrónimo más. Gracias por la risa! –

Cuestiones relacionadas