& # 8220; El relleno no es válido y no se puede quitar & # 8221; excepción en WebResource.axd

StackOverflow https://stackoverflow.com/questions/309859

Pregunta

Tengo una aplicación ASP.NET 2.0 que funciona bien en nuestro entorno local. Cuando se publica en un servidor de prueba, recibimos errores intermitentes en el servidor.

Aquí está el más común:

El relleno no es válido y no se puede quitar. Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.

  

Detalles de excepción:   System.Security.Cryptography.CryptographicException:    El relleno no es válido y no se puede   eliminado.

     

Error de origen:

     

Se generó una excepción no controlada   durante la ejecución de la corriente   solicitud web Información sobre el   origen y ubicación de la excepción   puede identificarse usando la excepción   seguimiento de la pila a continuación.

     

Seguimiento de pila:

     

[Excepción criptográfica: el relleno es   inválido y no se puede eliminar.]
  System.Security.Cryptography.RijndaelManagedTransform.DecryptData (Byte []   inputBuffer, Int32 inputOffset, Int32   inputCount, Byte [] & amp; outputBuffer,   Salida Int32 Offset, PaddingMode   paddingMode, Boolean fLast) +1545747
  System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock (Byte []   inputBuffer, Int32 inputOffset, Int32   inputCount) +257
  System.Security.Cryptography.CryptoStream.FlushFinalBlock ()   +30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (booleano   fEncrypt, Byte [] buf, Byte [] modificador,   Comienzo Int32, longitud Int32, booleano   useValidationSymAlgo) +164
  System.Web.UI.Page.DecryptString (String   s) +83
  System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest (HttpContext   contexto) +148
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute ()   +358 System.Web.HttpApplication.ExecuteStep (IExecutionStep   paso, booleano & amp; completadoSincrónicamente)   +64

Esto sucede en una solicitud a una solicitud WebResource.axd específica.

El otro error que estamos viendo es este:

  

La validación de MAC del estado de vista ha fallado.   Si esta aplicación está alojada en una web   Granja o clúster, asegúrese de que    la configuración especifica   la misma clave de validación y validación   algoritmo. AutoGenerate no se puede usar   en un clúster. Descripción: un   se produjo una excepción no controlada durante   la ejecución de la web actual   solicitud. Por favor revise el seguimiento de la pila   para más información sobre el error   y dónde se originó en el código.

     

Detalles de excepción:   System.Web.HttpException: Validación   de viewstate MAC falló. Si esto   la aplicación está alojada en un Web Farm o   clúster, asegúrese de que   la configuración especifica lo mismo   validationKey y validación   algoritmo. AutoGenerate no se puede usar   en un clúster.

Este error ocurre ocasionalmente al publicar un formulario.

Ahora, antes de saltar y decirme la respuesta obvia (habitual) a este error, considere esto:

  • La aplicación se implementa en Windows Server 2003 en IIS6
  • NO está en una granja web. Aquí solo se usa un servidor web.
  • La identidad del grupo de aplicaciones es una cuenta de servicio personalizada, y ejecuté aspnet_regiss -ga < username > en el servidor. Sin efecto.
¿Fue útil?

Solución

El error se debe a que su dominio de aplicación fue reciclado / reiniciado. Cuando eso sucede, la aplicación y la clave de la máquina se configuran en automático, cambian. Eso afecta el descifrado de la información en la url de las URL de recursos (.axd). Configurar una clave de máquina fija evitará que vuelva a suceder.

Verifique esto para obtener más información sobre un caso similar (la explicación es con un problema con la validación de viewstate, pero la causa es la misma): http://www.developmentnow.com/blog/InvalidViewstate+Or+Unable+To+Validate+Data+Error.aspx

También me había estado preguntando al respecto durante bastante tiempo. Después de ver esta pregunta, me puso de nuevo: ¿Es este un intento de romper la seguridad de mi sitio ASP.Net? ... que acabo de responder con casi lo mismo. Tenía la sensación de que se trataba de reiniciar algo, porque cuando publicamos algo que recicló la aplicación, el error se mostró en el registro, pero no tenía ninguna otra fuente que indicara su relación (hoy encontré ese caso en estado de vista no válido debido a el cambio de machinekey :))

Ps. arriba finalmente lo explica en un solo servidor :)

Otros consejos

Este problema aparece cuando se genera una publicación antes de que la página se cargue completamente en el navegador. Eche un vistazo a esta pregunta .

Ben,

Para su primer problema, encontré esto que parece estar un poco más al punto de lo que está viendo, ya que el problema está ocurriendo esporádicamente. Debería poder encontrar una explicación completa de esto en http: // www. codeproject.com/KB/security/Cryptor.aspx#aes .

Lo que realmente necesita hacer es establecer RijndaelAlg.Padding en PaddingMode.ISO10126, PaddingMode.PKCS7 o PaddingMode.ANSIX923. Cualquiera de estos 3 valores debería funcionar, siempre que use el mismo valor al cifrar y descifrar. Otros valores funcionarán con algunos datos, pero no con todos los datos. La URL anterior explica por qué.

Lo que no entiendo es la razón por la que Microsoft proporciona opciones que a veces no funcionan, o al menos por qué no establecen por defecto una opción confiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top