ASP.Net 發布超時
我在過去兩週遇到了 asp.net 文章問題。
設想:
我的應用程序頁面有 3 個控制項。一個所見即所得的編輯器(免費文本框),一個文本框來獲取在所見即所得編輯器中編輯的文章的名稱,另一個文本框接受關鍵詞。
頁面中控制項從上到下的順序如下,
第一,名稱文本框
第二,所見即所得編輯器
最後,關鍵字文本框
問題:
當使用者嘗試保存他們編輯的文件時,IIS 伺服器會返回超時(生產在 win 2008 上執行)。但有趣的是,“名稱文本”框資訊和所見即所得編輯器的一半(它不完全是一半,它因每種情況而異)資訊被保存到數據庫中。但最後一個“關鍵字文本”框沒有保存。在此 Web 伺服器掛起一段時間後,將使用者踢出,幾分鐘後恢復正常速度。我認為應用程序池被回收了。但在我的開發環境中一切正常(在我的電腦上執行 Win 7 64 位)。我還在生產和開發環境的頁面指令中設置了 ValidateRequest=“False”。
環境:
環境 .NET 4.0、ASP.NET
FreeText 框所見即所得編輯器
Shared Hosting windows 2008
SQL Server 2008
嘗試過的解決方案(但沒有突破):
嘗試使用不同的瀏覽器 Firefox、chrome、IE 和相同的錯誤。
在頁面指令中添加了 ValidateRequest=“False” 並用純文字框替換了所見即所得編輯器並嘗試保存,同樣的問題。
剛剛嘗試直接從 page.request 對象記錄發布數據。仍然為所見即所得的文本框獲取“名稱文本框”一半的完整數據,其餘的則沒有。
數據庫連接或表欄位沒有問題。我已經三重檢查了。
可能的懷疑和問題:
據我所知,文章數據長度沒有限制。但在 IIS 中是否可以覆蓋它?想知道這是否是在我的共享主機上設置的。
基本上,http post 數據在瀏覽器和 server.request 對象之間的某處被截斷。如果發生這種情況會是什麼原因?
如果 http post 被截斷,為什麼整個應用程序會掛起(或重新啟動)?
將html內容髮佈為http post時需要採取哪些預防措施?
謝謝你。
新發現:
使用 httpfox 檢查了我的文章。文章大小約為 9958 字節。但 Firefox 發送前 330 個字節的數據,然後網頁掛起。大約一分鐘後,我在 httpfox 中收到 NS_ERROR_NET_RESET 錯誤程式碼。
使用帶有 IE9 的 filder2 檢查了我的文章。它嘗試發送前 512 個字節然後掛起。返回“ReadResponse() 失敗:伺服器未返回對此請求的響應。”
問題:
這可能是瀏覽器問題或伺服器問題。我認為如果瀏覽器出現問題,IE 和 Firefox 不會發生這種情況。
更新:
很可能將問題與網路託管隔離開來。通過將表單發布 url 更改為不同的域進行測試,並查看是否可以在該域中檢索值。是的,它有效。只有它不適用於我的域。有趣的是,我對普通的 html 頁面文章進行了測試。它也沒有工作。因此很可能安裝了安全性以防止這種情況或伺服器配置錯誤。已經把票給他們,等待。
無論如何,您的所有回饋都幫助我隔離了問題。
解決了:
是的,這個問題出現在我們的虛擬主機網站上。到目前為止,我從他們那裡聽到的消息就像是一些防火牆阻止了來自 http 的大文章。他們說現在我們的域被列入白名單。無論如何,現在它的作品。但這佔用了我 2 週的時間,但這是一次很好的學習經歷。謝謝大家幫助。非常感謝。
我在一個網頁上遇到了同樣的錯誤。它非常有線,因為如果我使用代理,錯誤就會消失,如果我直接從我的電腦上呼叫,我就會超時,並且永遠不會繼續。
到現在為止,2011 年 12 月出現此問題的站點是http://www.auctionsniper.com/ 如果我使用它的移動版本,則相同的站點可以工作。
在對上述站點進行多次檢查後,我發現問題出在非常大的視圖狀態!我如何找到它:我保存頁面的 html 部分,因為它呈現並開始從 html 中刪除項目並發布文章,直到我發現當我削減視圖狀態文章時文章繼續。
解決方案是在許多不需要的控制項上禁用視圖狀態,並在較小的部分壓縮+剪切剩餘的視圖狀態發布數據。
您可以穀歌並找到許多方法來壓縮和切割部分視圖狀態。
一些文章:
http://msdn.microsoft.com/en-us/magazine/cc188774.aspx
如何剪裁教程: http:
//www.dotnetfunda.com/articles/article634-viewstate-patterns-in-aspnet-.aspx
如何壓縮它
http://www.hanselman.com/blog/ZippingCompressingViewStateInASPNET.aspx
http://www.codeproject.com/KB/viewstate/ViewStateCompression.aspx
http://www.google.com/search?hl= en&safe=off&q=asp.net+compress+viewstate&aq=f&aqi=g1g-b2&aql=f&oq=
Ps:在您使用的免費TextBox的這個展示頁面中,視圖狀態非常大!甚至它的文本都是空的,想像一下如果你實際擁有和文本里面的視圖狀態有多大。不是那麼免費 - 成本是巨大的視圖狀態。
跟進
正如Jeyara在下面的評論中所說,最終這是錯誤,託管伺服器上的防火牆阻止了大型文章文件。
因此,錯誤/超時與大量回發數據有關,這是一個罕見但存在的問題。