2010-05-15 95 views
2

我正在爲我正在開發的網站上的一些長URL獲取404錯誤。經過一番挖掘,我發現當URL的某些方面的長度超過了IIS7中的可配置限制時,會發生這種情況。在這種情況下,requestLimits財產所需的maxQueryString屬性在web.config500錯誤的長URL iis7

<system.webServer> 
<security> 
    <requestFiltering> 
    <requestLimits maxQueryString="4096" maxAllowedContentLength="4096" maxUrl="8192" > 
    </requestLimits> 
    </requestFiltering> 
</security> 

增加這立即解決了問題我的開發服務器上,但在遠程服務器上我現在獲得:

500 - 內部服務器錯誤。

還有 有問題,您正在尋找的資源 ,並且不能顯示 。

這就是它給我的所有信息。

+2

爲什麼您首先有這樣大的URL?這會導致問題出現。 – 2010-05-15 16:40:58

+1

這很奇怪。錯誤應該是HTTP 414:Way Too F#%&ing Long(http://thedailywtf.com/Articles/HTTP-414-Way-Too-Fing-Long.aspx)。 – 2010-05-15 16:46:55

回答

1

更改您的Flash將數據作爲POST發送,因此它不會附加到URL。 Here's some sample code。另外,您可能需要更改服務器端以查找數據而不是GET。

+0

我有很多像「c = 32&c = 33&c = 34 ....」這樣的參數,它很好地映射到動作方法的List 參數上。使用Post它看起來並不那麼簡單 – 2010-05-16 11:14:47

+1

我對asp方面一無所知,但是如果您沒有看到很容易從POST中獲取數據的好方法,請在其上打開一個問題 - 因爲這是您的問題, 不是這個。 ;)即使你得到這個工作,當別人的瀏覽器或工具欄或附件截斷了URL時,它也會再次失敗。 (看起來IE有2048個字符的限制,或者習慣於)。POST是你正在做什麼的正確方法。 – fenomas 2010-05-16 13:53:14

+0

你沒有回答這個問題 – matteofigus 2014-06-19 13:09:32

0

你不應該使用這樣長的網址。除其他原因之外,至少有一個常用工具欄(Bing,Yahoo,Google)會打破它們,產生這樣的錯誤。用戶會責怪你。

我知道這是因爲我的一位用戶在使用舊版應用時遇到了這樣的問題。當我刪除工具欄(她已經安裝了三個!),問題就消失了。

+0

我需要通過來自Flash的查詢字符串發送數百個參數我不知道該如何做。 – 2010-05-15 16:59:50

+1

@Chris Porter:有沒有辦法從Flash POST數據? – animuson 2010-05-15 17:07:29

1

您確定您的主機/生產服務器正在運行Windows Server 2008(或2008 R2)嗎? 上面描述的設置僅適用於IIS 7+。

+0

這是Windows Server 2008 - 網絡版 – 2010-05-16 10:58:04

0

GET請求僅受限於瀏覽器對URL字符串長度的限制。 在IE中,它是2,083個字符,減去實際路徑中的字符數。其他瀏覽器對URL字符串的長度沒有明確的限制。這些文章可能對您有所幫助。

http://www.boutell.com/newfaq/misc/urllength.html

http://support.microsoft.com/kb/q208427

RFC 2616, 「超文本傳輸​​協議 - HTTP/1.1,」 未指定URL長度的任何要求,因此瀏覽器可以自由地規定他們認爲合適的。

因此,如果它符合您的要求,您應該使用POST而不是GET