Solución:
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.
requestLimits Elemento para requestFiltering [IIS Settings Schema]
Es posible que también deba agregar lo siguiente en su web.config
<system.web>
<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>
Consulte: httpRuntime Element (esquema de configuración de ASP.NET)
Por supuesto, los números (32768 y 65536) en los ajustes de configuración anteriores son solo ejemplos. No tiene que usar esos valores exactos.
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 configurar el maxQueryStringLength
propiedad en el <httpRuntime>
etiqueta:
<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />
maxQueryStringLength
predeterminado a 2048
.
Más sobre esto aquí:
Ampliación del rango de URL permitidas
Intenté ponerlo en <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 cadenas de consulta largas. Luego pensé que el problema estaba relacionado con la cadena de consulta y probé la respuesta de @ MattVarblow. Simplemente funcionó en IIS 7. 🙂
Algo más para verificar: si su sitio usa MVC, esto puede suceder si agregó [Authorize] 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.