Cómo configurar web.config para permitir solicitudes de cualquier longitud


138

Estoy creando un sitio en el que me gustaría crear un archivo del lado del cliente a partir del valor de un elemento textarea.

Tengo el código para hacer esto, pero recibo este error

Error HTTP 404.15 - No encontrado El módulo de filtrado de solicitudes está configurado para denegar una solicitud donde la cadena de consulta es demasiado larga.

¿Hay alguna forma de anular esto para poder procesar solicitudes de cualquier tamaño?

Si no, ¿hay alguna manera de generar archivos del lado del cliente sin usar el sistema de archivos / objeto x activo?

Gracias


8
Lo que debe tener en cuenta es que, aunque la longitud de la cadena de consulta puede ser configurable para IIS o su aplicación, existe un estándar HTTP para la longitud de la URL. Como está utilizando una cadena de consulta, está pasando valores como parte de la URL. La longitud máxima de caracteres de la URL es de 2000 caracteres. Si sus valores van a ser cadenas largas, sería mejor PUBLICAR los valores en lugar de pasarlos en la cadena de consulta.
Jeff LaFay

2
De acuerdo con Jlafay. Es una práctica recomendada PUBLICAR los valores cuando tiene más de 2-3 parámetros simples. y cuando use una cadena de consulta, asegúrese de cifrarlos.
Jack

Respuestas:


244

Agregue lo siguiente a su web.config:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

Ver:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

Actualizado para reflejar los comentarios.

Elemento requestLimits para requestFiltering [Esquema de configuración de IIS]

Es posible que también deba agregar lo siguiente en su web.config

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

Consulte: Elemento httpRuntime (Esquema de configuración de ASP.NET)

Por supuesto, los números (32768 y 65536) en la configuración anterior son solo ejemplos. No tiene que usar esos valores exactos.


24
Eso por sí solo no fue suficiente para mí. También tuve que agregar esto a la sección system.web: <httpRuntime maxQueryStringLength = "8192" />
Rob Sedgwick

2
nnn es la longitud máxima de cadena que le gustaría permitir, por ejemplo, 32768
Matt Varblow


Probé cada uno individualmente, configurando el nodo de seguridad en system.webServer y luego eliminando y agregando los atributos al nodo httpRuntime. Definitivamente necesitaba ambos para trabajar. ¡Muchas gracias!
David Gunderson

2
Nota: la etiqueta <httpRuntime> va bajo <system.web> : <system.web> <httpRuntime maxQueryStringLength = "32768" maxUrlLength = "65536" /> </ system.web>
LePatay

33

En mi caso (Visual Studio 2012 / IIS Express / ASP.NET MVC 4 app / .Net Framework 4.5) lo que realmente funcionó después de 30 minutos de prueba y error fue establecer la maxQueryStringLengthpropiedad en la <httpRuntime>etiqueta:

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLengthpor defecto 2048.

Más sobre esto aquí:

Expandir el rango de URL permitidas


Intenté configurarlo <system.webServer>como sugiere @MattVarblow , pero no funcionó ... y esto se debe a que estoy usando IIS Express (basado en IIS 8) en mi máquina de desarrollo con Windows 8.

Cuando implementé mi aplicación en el entorno de producción (Windows Server 2008 R2 con IIS 7), IE 10 comenzó a devolver errores 404 en solicitudes AJAX con largas cadenas de consulta. Luego pensé que el problema estaba relacionado con la cadena de consulta y probé la respuesta de @ MattVarblow. Simplemente funcionó en IIS 7. :)


2
Para mí, fue enable = "true" lo que hizo que la magia sucediera :)
Johann Combrink

6

Algo más para verificar: si su sitio está usando MVC, esto puede suceder si agregó [Autorizar] a su clase de controlador de inicio de sesión. No puede acceder al método de inicio de sesión porque no está autorizado, por lo que redirige al método de inicio de sesión -> boom.


¡Gracias! Experimenté este problema porque moví el Menú / Navegación a una vista parcial y a otro Controlador que no permitía conexiones anónimas.
Westerlund.io

Otro caso en el que el mensaje de error, aunque es verdadero, no guarda relación con el problema real.
Steve Smith

1
Consulte también las propiedades del proyecto, ya que podría ser que la autenticación de Windows esté "habilitada" y la autenticación anónima esté deshabilitada ". Consulte este artículo detallado - Error (Visual Studio 2013, MVC5): el módulo de filtrado de solicitudes está configurado para denegar una solicitud donde la cadena de consulta es demasiado larga
fujiFX

5

Si se encuentra con este problema al ejecutar un servidor web IIS 8.5, puede usar el siguiente método.

Primero, busque el módulo "Filtrado de solicitudes" en el sitio IIS en el que está trabajando, luego haga doble clic en él ...

ingrese la descripción de la imagen aquí

A continuación, debe hacer clic con el botón derecho en el área blanca que se muestra a continuación y luego hacer clic en la opción del menú contextual llamada "Editar configuración de funciones" .

ingrese la descripción de la imagen aquí

Entonces, lo último que debe hacer es cambiar el valor de "Cadena de consulta máxima (Bytes)" de 2048 a algo más apropiado, como 5000 para sus necesidades.

ingrese la descripción de la imagen aquí


Gracias, esta es la solución más simple y funcional para mí
Afif Zafri

¡¡¡¡¡Gracias amigo!!!!!
Noobie

0

Tuve un problema similar al tratar de implementar una aplicación web ASP en IIS 8. Para solucionarlo, hice lo que Matt y Leniel sugirieron anteriormente. Pero también tuve que configurar la configuración de autenticación de mi sitio para habilitar la autenticación anónima. Y eso funcionó para mí.


0

Tuve que agregar [AllowAnonymous] a las funciones de ActionResult en mi página de inicio de sesión porque el usuario aún no estaba autenticado.


0

Si su sitio web está utilizando autenticación, pero no tiene el método de autenticación correcto configurado en IIS (por ejemplo, Básico, Formularios, etc.), el navegador se quedará atascado en un bucle de redireccionamiento. Esto hace que la URL de redireccionamiento se alargue más y más hasta que explote.


0

También generará un error cuando pase una cadena grande en el parámetro de llamada ajax.

así que para ese tipo de uso, usar post post en ajax resolverá su problema al 100% y no es necesario establecer la longitud en web.config.

// var UserId = matriz de 1000 ID de usuario

$ .ajax ({global: false, url: SitePath + "/ User / getAussizzMembersData", "data": {UserIds: UserId}, "type": "POST", "dataType": "JSON"}}


-1

Error HTTP 404.15 - No encontrado El módulo de filtrado de solicitudes está configurado para denegar una solicitud donde la cadena de consulta es demasiado larga.

Para resolver este problema, verifique en el código fuente si la Formetiqueta tiene una propiedadmethod estado get / set.

Si es así, la methodpropiedad debe ser eliminada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.