2011-12-09 53 views
9

无效的,这里是我的网址请求URL是在IIS 7

http://abc.domain.com/controller/action/A74444C3A7FA858C7995CA9954CBCF1E26604634767C5575396D908E8415CF8CCC04C05F49FED0AA9D9743B69ABF232BDE9787A5222D081DA638896C0D2379A673E1747A2FFE1158F14AF098B2899D2ABEB4EA738D89369627E479796B6B2B9EA9B247CC59EF10E3A88B6A56A87F0818E2AD2A942FFA31F1C941BB7AF6FDC55FE6733353F28DFAC1827688604CBFBAB4856E6C75F810D13923F9D913F51F5B02980163E6CD63BC04610AD2C12E07360D7BC2C69F1B0CD03E

有在URL中的一切都被加密无效的字符。仍在收到

错误的请求 - 无效的URL HTTP错误400.请求URL无效。

我知道URL是相当长的,我能够加入,以解决我的卡西尼这个问题该 的httpRuntime maxUrlLength =“512”

在web.config

然而,在IIS7即使玩弄requestfiltering maxurl和maxquerystring值我一直无法解决这个问题。

这是一个asp.net mvc 3应用程序。

+0

您是否尝试与[''](HTTP打:// WWW .iis.net/ConfigReference/system.webServer /安全/的requestFiltering/requestLimits)?我知道这是来自IIS7的一两个版本,但可能会有一些冲突。 –

+0

是的,我已经在system.webserver下添加了这个requestLimits maxUrl =“512” – Qudoos

回答

9

你的问题是你没有使用查询字符串,而是一个路径。路径的最大长度为255.

+0

[根据MSDN](http://msdn.microsoft.com/en-us/library/ms689462%28v=vs.90%29。 aspx)默认的maxUrl长度(以字节为单位)是4096 –

+0

您可能是正确的,但这并不能解释它为什么在Cassini上工作。在我的Win 7开发人员机器上,它与Cassini一起工作,但在IIS 7下运行同一站点时无法正常工作。如果限制在路径上,则应该在操作系统级别。没有? – Qudoos

+0

@Brad,是的,我阅读过这些文章,并且使用了大量数据来查看它是否有效。 – Qudoos

21

这一个是对子孙后代和跟踪我自己的问题。然而,在另一个答案中已经说过,不是很明确。

我在我的问题上遇到了同样的问题。答案当然是将长URL段转换为查询字符串。更容易处理。

但问题是,HTTP.sys甚至不会让请求通过,因为URL的一部分超过了260个左右的字符。但是,我们仍然不得不支持它。

您可以在注册表中更改该设置。一旦你重新启动,该网址将工作。

注册表:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters] 
"UrlSegmentMaxLength"=dword:00000400 

这将有效地设定段长度为1024。

Source

+5

***这***是***真*** **解决方案**!像魅力一样工作(Win8,IIS 8) –

+2

这个明确地在Windows Server 2012上工作。唯一的区别是密钥不存在,所以它需要被添加... – vidriduch

+1

@vidriduch是的,它需要被创建。像大多数注册表设置一样,如果密钥不存在,则将应用默认值。这里默认是260. :) –