2011-12-09 55 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. :) –