vuelta segunda resultados registro ipn convocatoria admision c# .net asp.net iis iis-7

c# - segunda - Cancelando la validación de solicitud usando HttpHandler en IIS 7



segunda vuelta ipn (7)

¿Qué tal esto?

<system.web> <pages validateRequest="false"> </pages> </system.web>

Tengo una aplicación que tiene que ver con la obtención de caracteres "especiales" en su URL (como &, +,%, etc.). Cuando envío una solicitud a la aplicación usando estos caracteres (por supuesto, los envío escapados) obtengo el código de respuesta "Solicitud incorrecta" con el mensaje "ASP.NET detectó caracteres no válidos en la URL". El seguimiento de la solicitud me mostró que el error se produjo desde el "Módulo de autenticación".

He buscado un poco y encontré que cada página tiene una ValidateRequest y cambiar su valor a falso resuelve el problema. Lamentablemente estoy usando Httphandler. ¿Alguien sabe cómo detener la validación de solicitud utilizando el controlador http?


Debajo de la solución funcionó para mí: cree la siguiente entrada de registro DWORD con un valor de 1: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ASP.NET/VerificationCompatibility

En web.config , establezca el atributo requestFiltering elemento requestFiltering en true .


Los cambios al por mayor a nivel de la aplicación o la máquina no eran aceptables para mí. Solo tenía un parámetro que un cliente enviaba incorrectamente que necesitaba eliminar.

Descubrí que cuando se realiza una solicitud con html u otros elementos potencialmente peligrosos en la cadena de consulta, puede borrar la cadena utilizando context.Request.RawUrl y, una vez que se borra la cadena de consulta, use context.RewritePath(scrubbedUrl) .

  1. Lo primero en el controlador, obtener el context.Request.RawUrl
  2. Limpiar la solicitud incorrecta RawUrl por mala entrada
  3. context.RewritePath(srubbedUrl)
  4. Lucro

Parece que la validación de solicitud solo le preocupa el acceso a context.Request.Params[] , por lo que si elimina y reescribe la ruta (a la misma ruta) antes de acceder a la colección de Params, estará satisfecho.


Me encontré con el mismo problema (creando un IHttpHandler que necesitaba recibir solicitudes con caracteres especiales en la URL). Tuve que hacer dos cosas para arreglarlo:

  1. Cree la siguiente entrada de registro DWORD con un valor de 1: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/ASP.NET/VerificationCompatibility

  2. En web.config, establezca el atributo allowDoubleEscaping del elemento requestFiltering en verdadero.


Puede eliminar todos los módulos con

<httpModules> <clear /> </httpModule>

para hacer que la solicitud llegue a su controlador. O tal vez puede eliminar los módulos específicos que detienen su solicitud.

Esta es la lista de módulos cargados por defecto en ASP.NET 2.0 desde aquí

<httpModules> <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" /> <add name="Session" type="System.Web.SessionState.SessionStateModule" /> <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" /> <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" /> <add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule" /> <add name="RoleManager" type="System.Web.Security.RoleManagerModule" /> <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" /> <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" /> <add name="Profile" type="System.Web.Profile.ProfileModule" /> </httpModules>


Puede establecer validateRequest en false en la sección de páginas de web.config. ¿Tal vez eso también funciona para HttpHandlers?


Tuve el mismo problema y lo puse en funcionamiento al establecer validateRequest = "false" así como requestValidationMode = "2.0", como a continuación. Sin ediciones de registro.

<system.web> <httpRuntime requestValidationMode="2.0" /> ... <pages ... validateRequest="false" /> </system.web>