我发现了一个 ASP.NET 的问题,我知道至少已经让其他人感到困惑。我们试图使用 HttpModule 来处理 Web 应用程序的通配符请求。生成的 URL 是动态的,可能会长达几百个字符。不幸的是,aspnet_isapi.dll 文件中似乎存在一些限制,它将 URL 中的路径长度限制为 MAX_PATH,该值在硬编码时为 260 个字符。
有人遇到过这个问题并找到了规避此限制的方法吗?查询字符串参数不是一个选项。
谢谢, Greg Ballard
我发现了一个 ASP.NET 的问题,我知道至少已经让其他人感到困惑。我们试图使用 HttpModule 来处理 Web 应用程序的通配符请求。生成的 URL 是动态的,可能会长达几百个字符。不幸的是,aspnet_isapi.dll 文件中似乎存在一些限制,它将 URL 中的路径长度限制为 MAX_PATH,该值在硬编码时为 260 个字符。
有人遇到过这个问题并找到了规避此限制的方法吗?查询字符串参数不是一个选项。
谢谢, Greg Ballard
我最终在 web.config 中使用以下内容来解决这个问题,使用的是 Mvc2 和 .Net Framework 4.0。
<httpRuntime maxUrlLength="1000" relaxedUrlToFileSystemMapping="true" />
这是与aspnet_isapi.dll相关的已知问题,目前还没有解决方法。当您在内置的Visual Studio Web服务器(也称为Cassini)中运行站点时,您不会看到此问题的原因是因为它都是托管代码,不依赖于aspnet_isapi.dll。
这将在未来版本的ASP.NET中得到解决。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters
UrlSegmentMaxLength
感谢您的回答。虽然我没有找到那篇确切的文章,但我找到了类似的文章。然而,这不是IIS的限制。您可以将更长的路径传递给IIS请求,并且它将返回正确的响应。您可以通过尝试一个简单的html页面来验证。只有在使用aspnet_isapi.dll处理请求时才会出现问题。即使在Visual Studio内置的调试服务器中,也可以处理比260更长的路径。