相关疑难解决方法(0)

ASP.NET MVC,URL路由:最大路径(URL)长度

情景

我有一个应用程序,我们采用了旧的查询字符串URL结构:

?x=1&y=2&z=3&a=4&b=5&c=6
Run Code Online (Sandbox Code Playgroud)

并将其更改为路径结构:

/x/1/y/2/z/3/a/4/b/5/c/6
Run Code Online (Sandbox Code Playgroud)

我们正在使用ASP.NET MVC和(自然地)ASP.NET路由.

问题

问题是我们的参数是动态的,并且(理论上)我们需要适应的参数数量没有限制.

这一切都很好,直到我们受到以下列车的打击:

HTTP错误400.0 - 错误请求ASP.NET在URL中检测到无效字符.

当我们的URL超过一定长度时,IIS会抛出此错误.

Nitty Gritty

这是我们发现的:

这不是IIS问题

IIS确实有最大路径长度限制,但上面的错误不是这个.

了解dot iis dot net如何使用请求过滤部分"根据请求限制过滤"

如果IIS的路径太长,它将抛出404.14,而不是400.0.

此外,IIS最大路径(和查询)长度是可配置的:

<requestLimits


   maxAllowedContentLength="30000000"


   maxUrl="260"


   maxQueryString="25" 


              />
Run Code Online (Sandbox Code Playgroud)

这是一个ASP.NET问题

经过一番探讨:

IIS论坛主题:ASP.NET 2.0最大URL长度? http://forums.iis.net/t/1105360.aspx

事实证明,这是一个ASP.NET(嗯,真正的.NET)问题.

事情的核心是,据我所知,ASP.NET无法处理超过260个字符的路径.

在棺材中的钉子,这是由菲尔哈克本人证实的:

Stack Overflow ASP.NET url MAX_PATH limit问题ID 265251

问题

那么问题是什么?

问题是,这有多大的限制?

对于我的应用程序,它是一个交易杀手.对于大多数应用程序,它可能不是问题.

披露怎么样?没有提到ASP.NET路由的地方我听过这个限制的窥视.ASP.NET MVC使用ASP.NET路由这一事实使其影响更大.

你怎么看?

iis url asp.net-mvc routing asp.net-routing

65
推荐指数
4
解决办法
6万
查看次数

标签 统计

asp.net-mvc ×1

asp.net-routing ×1

iis ×1

routing ×1

url ×1