System.IO.PathTooLongException On A URL

本文关键字:URL On PathTooLongException IO System | 更新日期: 2023-09-27 18:08:03

我遇到了一个问题,长URL会抛出System.IO.PathTooLongException。这有点奇怪,因为System.IO.PathTooLongException实际上是针对物理文件的,它与URL无关。

作为一个例子,我有一个URL,看起来像这样:

products-for-sale.mvc/searchterm1-something/price-1000-1500/searchterm3-etcetc/ 

基本上是用搜索词填满了URL。我们还允许关键字搜索,如果用户正在寻找特定的东西,它可以变得有点大。顺便说一句,URL上的.mvc是应用程序在IIS6上运行时遗留下来的,不支持无扩展的URL,但这在这里应该不是问题。

我认为问题是,它使用URL寻找物理文件。我可能是错的,但我认为这就是问题所在。几乎每篇关于PathTooLongException的文章都围绕着实际文件展开,而不是URL太长。

我有一个暗示,在IIS处理程序映射中,我可以关闭以检查是否存在物理文件(我认为这是IIS6中的设置?),但在IIS7中,在处理程序映射的请求限制下,它只有"仅当请求映射到时调用处理程序",然后是文件/文件夹/文件或文件夹。在IIS中没有为.mvc勾选,并且没有其他地方我发现尝试说"如果使用此扩展名,请不要寻找物理文件"。

我对如何解决这个问题的猜测可能是错误的。

System.IO.PathTooLongException On A URL

在。net 4.0中,你需要设置HttpRuntimeSection。MaxUrlLength大于260。

<httpRuntime maxUrlLength="260" />

使用maxRequestPathLength适用于以前的。net版本。