2012-07-17 53 views
2

我有一個MVC3應用程序,它有大量用於收集用戶輸入的表單。表單依賴於使用jQuery的客戶端驗證。在本地IIS 7.5安裝下進行測試時,一切正常。在生產環境(也是IIS 7.5)中,在3個表單上,我們遇到了輸入視圖模型在POST操作中具有空值的間歇性故障。我添加了一些故障診斷代碼,並確定發生這種情況時,Request.Params集合包含名稱值的空值或空字符串。這似乎是相當隨機的,但只在特定形式上才被注意到。有沒有人經歷過這樣的事情,你有沒有找到解決方案?MVC3發佈的表單字段在宿主環境中間歇性地爲空

生產環境是:用戶通過RDP連接到Windows Server 2003 RDP客戶端/ IE8。用戶在RDP會話中運行IE8瀏覽器以連接到Windows Server 2008 R2/IIS 7.5。

看來這個問題只發生在瀏覽器和服務器之間的特定網絡連接上。第二個網絡沒有遇到這些問題。

+0

我目前有同樣的問題。你有沒有想過一個解決方案? – Gilles 2017-02-28 17:39:19

回答

1

您是否檢查過在防火牆級別設置的MTU大小。如果這太低,那麼這可能會導致問題。我看到了同樣的問題,即MTU大小已降低到1300以解決不相關的VPN連接問題。一旦防火牆級別的MTU大小增加到1500,問題就解決了。

HTTP POST請求以多個數據包發送。第一個包含頭部,而第二個包包含請求主體。有時,當你有網絡延遲時,身體就會迷路。

在IIS6中IIS管道將不會開始處理請求,直到收到整個請求爲止,從而導致超時(如果使用負載均衡器,則網關超時504)。在IIS7中,即使內容長度不爲零,您也不會超時,但確實會得到空的帖子。

我仍然有這個問題,而我即將恢復爲GET請求。它們是單個數據包,因此速度更快。

+0

我遇到這個問題。除了更改GET請求之外,還有解決方案嗎? – Gilles 2017-02-28 17:42:06

+1

@Gilles除非你控制網絡基礎設施,否則可能不是。我們無法讓託管公司解決負載平衡器上的問題,因此我們在可行的情況下恢復了GET請求。 – Junto 2017-03-07 16:26:55

相關問題