Límite MAX_PATH de URL de ASP.NET
isapi max-path (7)
@Haacked:
Phil, mencionas que este es un problema con aspnet_isapi.dll. ¿Esto no significa que este problema no debería existir en el modo de canalización integrada de IIS7?
Por lo que he escuchado, sin embargo, ( http://forums.iis.net/t/1105360.aspx ) todavía lo hace.
Me estoy encontrando con el mismo problema, y me siento como envainada. Parece que el enrutamiento ASP.NET se ve afectado. Por lo tanto, cualquier aplicación ASP.NET MVC debe tener URL más cortas que 260, después de lo cual debe volver a las cadenas de consulta, lo que parece un total de 180.
(Perdón por responder, comentar ... no hay suficiente representante para comentar aún :()
He encontrado un problema con ASP.NET que sé que al menos ha dejado perpleja a otra persona. Estábamos tratando de usar un HttpModule para manejar solicitudes de comodines a una aplicación web. La URL generada es dinámica y podría tener varios cientos de caracteres de largo. Desafortunadamente, parece haber una limitación en el archivo aspnet_isapi.dll que limita la longitud de la ruta en la URL a MAX_PATH que está codificada a 260 caracteres.
¿Alguien más se encontró con esto y encontró una forma de superar este límite? Los parámetros de cadena de consulta no son una opción.
Gracias, Greg Ballard
El problema en realidad se encuentra en Windows, no en ASP.NET. Windows ha establecido MAX_PATH en 260 y cuando IIS toma una solicitud para un nombre de archivo más largo, fallará. Probablemente ya haya encontrado este artículo de KBase, pero para cualquier otra persona: http://support.microsoft.com/kb/q177665/ . La sección Se aplica a: muestra que este comportamiento es esperado desde NT 3.51 hasta Vista y Server 2003.
En cuanto a una solución alternativa, tuve una situación similar, pero abandonaríamos nuestros intentos de evitar un parámetro de cadena de consulta y lo haríamos de todos modos.
Este es un problema conocido con aspnet_isapi.dll y actualmente no hay ninguna solución. La razón por la que no ve este problema cuando ejecuta su sitio en el servidor web de Visual Studio incorporado (también conocido como Cassini) es porque todo es código administrado y no depende de aspnet_isapi.dll.
Esto se abordará en una versión futura de ASP.NET.
Gracias por tu respuesta. Si bien no encontré ese artículo exacto, encontré algo similar. Sin embargo, esto no es una limitación en IIS. Puede pasar una ruta más larga en la solicitud a IIS y devolverá la respuesta correcta. Puede verificar intentándolo con una página html simple. El problema solo ocurre cuando se usa aspnet_isapi.dll para manejar las solicitudes. Incluso el servidor de depuración integrado en Visual Studio puede manejar rutas más largas que 260.
La clave de registro UrlSegmentMaxLength se puede usar para aumentar el máximo predeterminado de Windows de 260 caracteres por segmento de Url en las solicitudes HTTP entrantes:
- Clave:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/HTTP/Parameters
- Valor:
UrlSegmentMaxLength
- Tipo: REG_DWORD
- Datos: (Su nueva longitud máxima permitida del segmento Url deseada, por ejemplo, 4096)
El valor máximo permitido es 32766. Si se especifica un valor mayor, se ignorará. (Crédito: Juan Mendes)
Obtenga más información acerca de la configuración http.sys: http://support.microsoft.com/kb/820129
Es necesario reiniciar la PC para que un cambio en esta configuración tenga efecto. (Crédito: David Rettenbacher, Juan Mendes)
Fuente original para esta respuesta: https://.com/a/7817739/12484
Podría usar una ISAPI de reescritura de URL como IIRF para reescribir la URL en algo que aspnet_isapi puede procesar.
Terminé usando lo siguiente en el archivo web.config para resolver este problema usando Mvc2 y .Net Framework 4.0
<httpRuntime maxUrlLength="1000" relaxedUrlToFileSystemMapping="true" />