Tengo un sitio MVC3 en C #, tengo una vista particular que recibe parámetros de consulta desde 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ámica creada por la función 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 visor de informes control , 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 le presento a [Autorizar] el método de acción. Se rompe si está en su lugar, funciona bien sin él y [Autorizar] funciona bien en todos los demás métodos.
La URL completa en este caso tiene 966 caracteres, después de la investigación, parece que el valor de maxQueryStringLength es 2048 por defecto, pero se puede anular a cualquier valor de tipo entero, así que solo para las sonrisas agregué el
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
clave al archivo de configuración web debajo de la clave.
No hay alegría allí, así que me puse ridículo y lo hice 4096, todavía sin alegría.
Ahora que la URL completa tiene 966 caracteres, el atributo de autorización no puede agregar en serio otros 1082-3130 caracteres, entonces, ¿cómo puedo determinar cuál es el error en realidad o por qué la configuración no está surtiendo efecto?
VS2010 Pro SP1
fuente
Respuestas:
Cuando llega una solicitud no autorizada, toda la solicitud está codificada en URL y se agrega como una cadena de consulta a la solicitud al formulario de autorización, por lo que puedo ver dónde esto puede resultar en un problema dada su situación.
Según MSDN, el elemento correcto para modificar para restablecer maxQueryStringLength en web.config es el
<httpRuntime>
elemento dentro del<system.web>
elemento, consulte Elemento httpRuntime (esquema de configuración de ASP.NET) . Intente modificar ese elemento.fuente
En la raíz
web.config
de su proyecto, debajo delsystem.web
nodo:Además, tuve que agregar esto debajo del
system.webServer
nodo o recibí un error de seguridad para mis cadenas de consulta largas:fuente
maxQueryString
es la longitud en bytes como uint con un valor máximo de 4294967295 ymaxQueryStringLength
es la longitud en caracteres como int pero con un rango de 0-2097151.Para cualquier otra persona que pueda encontrar este problema y no se resuelva con ninguna de las opciones anteriores, esto es lo que funcionó para mí.
Había desactivado esto porque estábamos usando nuestra propia autenticación, pero eso llevó al mismo problema y la respuesta aceptada no ayudó de ninguna manera.
fuente
tengo este error usando datatables.net
Corregí el cambio del ajax predeterminado Get to POST en las propiedades de DataTable ()
fuente