2012-07-24 87 views
98

我正在建立一個網站,我想從textarea元素的值創建一個文件客戶端。如何配置web.config允許任何長度的請求

我在的地方要做到這一點的代碼,但我得到這個錯誤

HTTP錯誤404.15 - 未找到請求篩選模塊 配置爲拒絕的請求在查詢字符串太長。

有沒有辦法重寫這個,以便我能夠處理任何大小的請求?

如果不是,有沒有辦法生成文件客戶端而不使用文件系統/活動x對象?

感謝

+4

你想要考慮的是即使查詢字符串的長度可以配置爲IIS或你的應用程序,也有一個HTTP標準的URL長度。由於您使用的是查詢字符串,因此您將值作爲URL的一部分傳遞。最大URL字符長度爲2000個字符。如果你的值是冗長的字符串,最好是POST值而不是在查詢字符串中傳遞它們。 – jlafay 2012-07-24 17:48:27

+1

同意Jlafay。當您有超過2-3個簡單參數時,這是一個最佳實踐。當你使用查詢字符串時一定要加密它們。 – Jack 2013-05-24 07:14:03

回答

172

以下內容添加到你的web.config:

參見:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

更新,以反映意見。

requestLimits Element for requestFiltering [IIS Settings Schema]

您可能需要添加在你的web.config以下以及

<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/> 

參見:httpRuntime Element (ASP.NET Settings Schema)

當然在配置號碼(32768和65536)上面的設置只是例子。您不必使用這些確切的值。

+18

這對我來說還不夠。我還必須將此添加到system.web部分: 2013-07-23 10:58:17

+1

什麼是'nnn'?這是行不通的。在那裏使用整數32768。 – 2015-03-20 10:50:42

+2

nnn是您希望允許的最大字符串長度,例如32768 – 2015-03-20 17:37:04

24

在我的情況(的Visual Studio 2012/IIS快遞/ ASP.NET MVC 4應用程序/ .NET框架4.5)試驗的30分鐘後,真正的工作和錯誤被設置maxQueryStringLength財產在<httpRuntime>標籤:

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" /> 

maxQueryStringLength默認爲2048

更多在這裏:

Expanding the Range of Allowable URLs


我試着將它設置在<system.webServer>作爲@MattVarblow建議,但它沒有工作......這是因爲我使用的是IIS快遞(基於IIS 8)在我的開發機器上與Windows 8.

當我將我的應用程序部署到生產環境(帶有IIS 7的Windows Server 2008 R2)時,IE 10開始在帶有長查詢的AJAX請求中返回404錯誤字符串。然後我認爲這個問題與查詢字符串有關,並且嘗試了@ MattVarblow的答案。它只適用於IIS 7. :)

+1

對我來說,這是使= =真正的,使魔術發生:) – 2016-06-06 15:25:42

-1

HTTP錯誤404。15 - 未找到請求過濾模塊爲 ,配置爲拒絕查詢字符串過長的請求。

要解決此問題,請在源代碼中的Form標籤是否有一個屬性method是獲取/設置狀態。

如果是這樣,method屬性應該被刪除。

0

我有一個類似的問題,試圖部署一個ASP Web應用程序到IIS 8.要解決它,我做了馬特和Leniel上面的建議。但也必須配置我的網站的身份驗證設置以啓用匿名身份驗證。那爲我工作。

3

需要檢查的其他內容:如果您的站點正在使用MVC,如果您向登錄控制器類中添加了[Authorize],則可能會發生這種情況。它不能訪問登錄方法,因爲它沒有被授權,所以它重定向到登錄方法 - >繁榮。

+0

謝謝!我遇到過這個問題,因爲我將菜單/導航移到了部分視圖,而另一個控制器不允許匿名連接。 – Jefecito 2016-08-21 01:19:20

+0

另一種情況是錯誤信息雖然屬實,但與實際問題無關。 – 2018-02-21 12:46:24

0

我不得不在我的登錄頁面的ActionResult函數中添加[AllowAnonymous],因爲用戶還沒有通過身份驗證。

0

如果您的網站使用身份驗證,但您沒有在IIS中設置正確的身份驗證方法(例如Basic,Forms等),那麼瀏覽器將陷入重定向循環。這會導致重定向網址變得越來越長,直到它爆炸。