valor too the supera solicitud requestlimits requestfiltering query maxurllength maxquerystringlength maxquerystring maxallowedcontentlength longitud long length for exceeds esta dirección deny configured configurado c# javascript asp.net-mvc-3

c# - too - solicitud excede la maxQueryStringLength configurada al usar



the length of the url for this request exceeds the configured maxurllength value (4)


Tengo un sitio MVC3 en C #, tengo una vista particular alimentada con parámetros de consulta de una función de JavaScript, la función redirige al sitio a través de

window.location.href = "../ActionName?" + query_string;

query_string es la cadena de parámetros de consulta dinámicos creada por la función de JavaScript.

La razón de esta rareza es que a veces la misma función pasa la URL a un formulario web ASP.Net debido a que tiene que usar el control del reportviewer , la acción alternativa es guardar algunos parámetros, en este caso pasa a la vista. (Puede elaborar más si eso no tiene sentido)

Todo funciona bien hasta que introduzco [Autorizar] en el método de acción. Se rompe si está en su lugar, funciona bien sin, y [Autorizar] funciona bien en todos los otros métodos.

La URL completa en este caso es de 966 caracteres de largo, después de la investigación parece que el valor de maxQueryStringLength es 2048 de forma predeterminada, pero puede anularse a cualquier valor de tipo entero, así que para sonrisas agregué el

<security> <requestFiltering> <requestLimits maxQueryString="2048"></requestLimits> </requestFiltering> </security>

clave para el archivo de configuración web debajo de la tecla.

No hay alegría allí, así que me puse ridículo y lo hice 4096, todavía no hay alegría.

Ahora que la URL completa tiene 966 caracteres de largo, el atributo de autorización no puede agregar otros 1082-3130 caracteres, entonces, ¿cómo puedo determinar qué es realmente el error o por qué la configuración no surte efecto?

VS2010 Pro SP1


Cuando entra una solicitud no autorizada, toda la solicitud está codificada en la URL y se agrega como una cadena de consulta a la solicitud del formulario de autorización, por lo que puedo ver dónde puede dar lugar a un problema dada su situación.

Según MSDN, el elemento correcto para modificar para restablecer maxQueryStringLength en web.config es el elemento <httpRuntime> dentro del elemento <system.web> , consulte httpRuntime Element (Esquema de configuración de ASP.NET) . Intenta modificar ese elemento.


En la raíz web.config para su proyecto, debajo del nodo system.web :

<system.web> <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" /> ...

Además, tuve que agregar esto en el nodo system.webServer o recibí un error de seguridad para mis cadenas de consulta largas:

<system.webServer> <security> <requestFiltering> <requestLimits maxUrl="10999" maxQueryString="2097151" /> </requestFiltering> </security> ...


Para cualquier otra persona que pueda enfrentar este problema y no se solucione con ninguna de las opciones anteriores, esto es lo que funcionó para mí.

1. Click on the website in IIS 2. Double Click on Authentication under IIS 3. Enable Anonymous Authentication

Había desactivado esto porque estábamos usando nuestro propio Auth, pero eso nos llevó a este mismo problema y la respuesta aceptada no ayudó de ninguna manera.


Tengo este error usando datatables.net

Lo arreglé cambiando el ajax predeterminado Get to POST en las propiedades del DataTable ()

"ajax": { "url": "../ControllerName/MethodJson", "type": "POST" },