2012-07-24 103 views
98

Estoy creando un sitio en el que me gustaría crear un lado del cliente de archivos a partir del valor de un elemento textarea.Cómo configurar el web.config para permitir solicitudes de cualquier longitud

tengo el código en lugar de hacer esto, pero yo estoy recibiendo este error

HTTP Error 404.15 - No se encuentra el módulo de filtrado de solicitudes es configurado para denegar una solicitud en la cadena de consulta es demasiado largo .

¿Hay alguna manera de anular esto para que pueda 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

+4

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á transfiriendo valores como parte de la URL. La longitud máxima del carácter de URL es de 2000 caracteres. Si sus valores van a ser cadenas largas, sería mejor enviar los valores en lugar de pasarlos en la cadena de consulta. – jlafay

+1

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

Respuesta

172

Añadir lo siguiente a su web.config:

Ver:

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

Actualizado para reflejar los comentarios.

requestLimits Element for requestFiltering [IIS Settings Schema]

Es posible que tenga que añadir lo siguiente en su web.config, así

<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/> 

Ver: httpRuntime Element (ASP.NET Settings Schema)

Por supuesto, los números (32768 y 65536) en el config las configuraciones anteriores son solo ejemplos. No tiene que usar esos valores exactos.

+18

Eso solo no fue suficiente para mí. También tuve que agregar esto a la sección system.web:

+1

¿Qué es 'nnn'? Eso no funcionará Usa el entero 32768 allí. –

+2

nnn es la longitud máxima de cadena que le gustaría permitir, p. Ej. 32768 –

24

En mi caso (Visual Studio 2012/IIS expreso/ASP.NET MVC 4 app/.Net Framework 4.5) lo que realmente trabajó después de 30 minutos de ensayo y error se estaba poniendo la propiedad maxQueryStringLength en la etiqueta <httpRuntime>:

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

maxQueryStringLength se predetermina a 2048.

más sobre ello aquí:

Expanding the Range of Allowable URLs


I intentado fijar en <system.webServer> como @MattVarblow sugiere, pero no funcionó ... y esto es porque estoy usando IIS expreso (basado en IIS 8) en mi máquina dev 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 consulta larga cuerdas. Entonces pensé que el problema estaba relacionado con la cadena de consulta y probé la respuesta de @ MattVarblow. Simplemente funcionó en IIS 7. :)

+1

Para mí fue el enable = "verdadero" lo que hizo que la magia sucediera :) –

-1

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

Para resolver este problema, compruebe en el código fuente si la etiqueta Form tiene una propiedad method es obtener/establecer el estado.

En caso afirmativo, se debe eliminar la propiedad method.

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í.

3

Algo más que comprobar: si su sitio utiliza MVC, esto puede suceder si agrega [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.

+0

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

+0

Otro caso donde el mensaje de error, aunque es cierto, no guarda relación con el problema real. –

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 redirección. Esto hace que la URL de redirección sea cada vez más larga hasta que explota.

Cuestiones relacionadas