lunes, 5 de mayo de 2014

Event message: Error de autenticación de formularios para la solicitud. Motivo: el vale suministrado no era válido. Event detail code: 50201 (invalid ticket)

 

Tengo una solución de autentificación por formularios completamente personalizada, es decir que no utiliza el objeto FormsAuthentication para generar los vales (ticket) y ni para recuperarlos ni para actualizarlos.

La solución se encarga de crear el Principal, la cookies y así como de la encriptación y la firma de las cookies.

El síntoma

Haciendo unas mejoras para la lectura de propiedades desde la configuración de repente me apareció este error terrible. Terrible porque porque no tenía ni pies ni cabeza, no había manera de diagnosticarlo por razonamiento, más que por algo parecido a un “ataque de diccionario”, paso a pasito…

Este error “Event detail code: 50201” tiene muchas entradas en la Web pero en mi caso la solución no tiene nada que ver con ellas o por lo menos con las que leí, ¡algunas del año 2007!

image

El problema

Event code: 4005 
Event message: Error de autenticación de formularios para la solicitud. Motivo: el vale suministrado no era válido. 
Event time: 22/04/2014 10:12:19 p. m. 
Event time (UTC): 23/04/2014 03:12:19 a. m. 
Event ID: f90558d63abd44fea22996ac07792f94 
Event sequence: 58 
Event occurrence: 9 
Event detail code: 50201 

La cookie se adjunta inicialmente a la petición del contexto HTTP pero, cuando se intenta reenviar una petición Web cualquiera o simplemente re direccionar a la página inicial después de autentificarse correctamente (en términos de usuario en DB)  pues resulta que la cookie ha desaparecido y ya no está adjunta al nuevo Request, por lo tanto, nunca se puede salir de la página del LogOn, porque la autentificación por Forms desparece.


 


Solución


En mi caso el código hace referencia a varias propiedades del objeto FormsAuthentication, con el objeto de aprovechar la lectura simple de la configuración definida en la sección correspondiente.


Pues todo va bien, excepto por una propiedad, que si usted la referencia “todo se va a bolina” y aparece el error mencionado:


NO SE PUEDE referenciar la propiedad FormsAuthentication.FormsCookieName, en su lugar debe utilizar una constante.


Según mis pruebas ni siquiera se puede leer directamente la sección de configuración correspondiente, la cargué como XML puro y la leí directamente por XPath y el error aparece, supongo debido a que especifiqué un nombre de cookie en la sección <forms name=”.xname” /> e igualmente se inicializa el módulo HTTP default para FormsAuthentication.


Es decir el sólo hecho de pretender tomar el nombre de la cookie desde dicha propiedad, activa un comportamiento predeterminado (no deseado en este caso) para comprobar la validez del ticket de la cookie mediante los algoritmos predeterminados que lógicamente dirán que “el vale suministrado no era válido”.


Entonces, NO haga referencias al nombre de la cookie ni la coloque en la sección “forms” de la configuración. Deje su nombre como una constante o póngala en la sección del “appSettings” si cree que no puede vivir con un nombre fijo.


Etiquetas de Technorati: ,,,,

miércoles, 15 de mayo de 2013

Red inalámbrica (WiFi) muy lento en Dell XPS15 (nueva XPS L521X)

Problema

Laptop

Mi laptop tiene una tarjeta de red WiFi absurdamente lenta.

Con 30 Mbps de bajada potencial sólo obtengo a los sumo 2 Mbps.

image

Una prueba desde la red alámbrica Ethernet me devuelve los 25 o inclusive algo más de 30 megas, lo que muestra que el proveedor no es el problema.

Tablet ASUS

La misma prueba, desde el mismo lugar físico pero con una Tablet y con un teléfono, ambos con Android, me arroja un resultado muy diferente, lo que prueba que algo pasa con la tarjeta WiFi de mis laptop XPS 15.

image

Solución aparente

Drivers

Me encontré esta URL Dell XPS 15 (L502X) Wireless Issues – Fixed de paulbouwer.com con una solución sugerida desde Intel.

Fui a la página de Intel de auto detección y le permití ejecutarse.

Me detectó algunos drivers por actualizar, entre ellos, el de la tarjeta inalámbrica.

image

image

Realicé la instalación con la opción de actualización y….

imageimage

Pruebas después de actualizar el driver

Finalmente no me pidió reiniciar (¿driver actualizado en caliente?) la máquina y probé con este resultado.

image

No es el esperado….

Ejecuté un diagnóstico manual que instaló…

image

…así es que reinicié la máquina y…

image

Sigue mejor, pero no lo esperado…la Tablet sigue en 16 Mbps…

Con una red alámbrica

La siguiente es una prueba en red alámbrica (cable CAT6 a través de un switch 10/100Mbps) con la misma PC en una mañana buena (varios días después de la anterior)…

image

Conclusión

Siendo estricto, el problema de mi tarjeta inalámbrica, todavía no está realmente solucionado.

Etiquetas de Technorati: ,,

viernes, 30 de noviembre de 2012

Operación no válida dado el estado actual del objeto

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.InvalidOperationException: Operación no válida dado el estado actual del objeto.
Error de código fuente:

Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

Seguimiento de la pila:

[InvalidOperationException: Operación no válida dado el estado actual del objeto.]

Contexto


La pagina Web que se está enviando (POST) tiene más de mil llaves de identificación en el formulario.


Solución en mi caso


La actualización de seguridad MS11-100 de Microsoft limita el número máximo de miembros JSON, archivos y claves de formulario a 1000 en una solicitud HTTP. Debido a este cambio, las aplicaciones ASP.NET rechazan las solicitudes que contengan una cantidad de estos elementos superior a 1000. Los clientes HTTP que realicen estos tipos de solicitudes serán denegados y aparecerá un mensaje de error en el explorador web. El mensaje de error tendrá normalmente un código de estado HTTP 500. Este nuevo límite puede configurarse en función de las aplicaciones. Consulte la sección "Resolución" para obtener instrucciones de configuración.

Se configuró a 5500 en el APP config.



   1: <appSettings>
   2:    <!--La actualización de seguridad MS11-100 de Microsoft limita el número máximo de miembros JSON
   3:       , archivos y claves de formulario a 1000 en una solicitud HTTP. 
   4:       Debido a este cambio, las aplicaciones ASP.NET rechazan las solicitudes que contengan 
   5:       una cantidad de estos elementos superior a 1000-->
   6:   <add key="aspnet:MaxHttpCollectionKeys" value="5500" />
   7: </appSettings>


Fuente: Microsoft Support


viernes, 5 de octubre de 2012

Mensaje de error cuando ejecuta Regsvr32.exe en Windows de 64 bits

El objetivo es registrar un componente COM de 32 bits en una máquina de 64 bits.

Mensaje de error cuando ejecuta Regsvr32.exe en Windows de 64 bits

Bueno básicamente lo que hay que hacer es (asumiendo que tiene Windows 7):
(y sólo funciona si su máquina de x64 bits no tiene ningún problema con COM+, como ya me sucedió antes por culpa del  "Windows Easy Transfer" y estuve años sin poder hacerlo, ya que había que formatear y en mi caso era más caro el remedio que la enfermedad)

  1. Abrir un línea de comandos en modo administrativo.
  2. Cambiarse al directorio "SysWOW64" mediante cd C:\WINDOWS\SysWOW64
  3. image
  4. Crear un carpeta para sus viejas DLL's de COM (auto registrables). Esto para que sus dll’s tengas su propia carpeta y no esté por allí regadas en medio del mundanal ruido. Ejecute mkdir con el nombre de su carpeta.
  5. Copie sus dll’s en la carpeta con xcopy o con el explorador de Windows.
  6. Ejecute regsvr32 .\SuCarpeta\SuDll.dll
  7. Debería recibir un mensaje de registro exitoso.
Etiquetas de Technorati: ,

miércoles, 12 de septiembre de 2012

Configurar el Timeout para aplicaciones ASP.NET

Actividad 1: Grupo de aplicaciones

image

Actividad 2: Estado de la sesión de ASP.NET

image

 

image

Actividad 3: Configuración de la aplicación Web

Revisar la sección “sessionState”

  • El atributo “timeout” se configura en minutos enteros.
  • El atributo “sqlCommanTimeout” se configura en segundos enteros.
  <system.web>
<sessionState timeout="60" sqlCommandTimeout="360" cookieless="UseCookies" regenerateExpiredSessionId="true" />



Revisar la sección “forms”



  • El atributo “timeout” se configura en minutos enteros.
    <authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="60" />
</authentication>

Etiquetas de Technorati: ,