我們有一個HttpHandler直接處理來自定製客戶端軟件的HTTP上的二進制文章。客戶端軟件偶爾會發送導致IIS 7響應400-Bad Request的數據。由於「400錯誤請求」的特殊之處在於,HTTP.SYS在內核模式下透明地處理它,而不通知用戶模式的任何內容,因此不會在ASP.NET中處理錯誤。是否有可能在ASP.NET中捕獲這個http 400,以便我可以在這些場景中將特定數據寫入Response流?重定向到另一個頁面不是一個選項,因爲它需要在當前的請求/響應中。ASP.NET HttpHandler可以處理HTTP 400 - 錯誤請求嗎?
9
A
回答
2
如果你知道是什麼原因造成了400,那麼你可以通過註冊表來定製HTTP.SYS的行爲來對付它:
http://support.microsoft.com/kb/820129
但是,你應該知道,這樣做有潛在的安全和性能影響。
另一種選擇是在IIS之前使用過濾代理,從而在請求進一步前捕獲請求。
+0
錯誤來自無效內容長度標題,根據此:http://technet.microsoft.com/en-us/library/cc786188.aspx 不能自定義。看起來,如果沒有基本編寫自己的http服務器,這可能是不可能的。 – duckworth 2008-12-05 12:41:42
1
如果您的自定義客戶端導致IIS觸發HTTP 400,則可能存在缺陷並且未按照標準提交有效的HTTP請求。如果你可以改變客戶,這是正確的做法。否則,你正在使用的不是HTTP,並且IIS旨在處理HTTP請求。因此,你應該爲自己的協議運行一個自定義的服務器(這是一個非標準的HTTP類似的東西)。
建議不要使用IIS/ASP.NET來處理這樣的請求,因爲它可能會導致一些奇怪的意外事件發生。
2
我會讓他們修復自定義客戶端軟件。爲他們提供一份報告,顯示失敗的請求。如果你能夠運行Wireshark這樣的嗅探器,並且如果他們不相信他們的軟件存在問題,就可以發送數據包。
相關問題
- 1. WSO2 MB可以處理HTTP請求嗎?
- 2. HTTP請求:400錯誤
- 3. http POST請求錯誤400
- 4. ASP.NET和400錯誤請求錯誤
- 5. HTTP/1.1 400錯誤請求400
- 6. HTTP 400錯誤請求錯誤C#
- 7. POST返回HTTP 400錯誤請求
- 8. 錯誤400錯誤請求
- 9. 錯誤請求400
- 10. Http POST請求和400錯誤請求錯誤
- 11. HTTP請求失敗! HTTP/1.1 400錯誤請求
- 12. 400(錯誤請求)錯誤
- 13. HTTP頭400錯誤的請求響應
- 14. HTTP/1.1 400錯誤的請求
- 15. Ruby Net :: HTTP 400錯誤請求
- 16. AngularJS HTTP請求錯誤處理
- 17. ASP.NET Web服務 - 400錯誤請求
- 18. POST 400(錯誤請求)錯誤
- 19. ASP.NET MVC處理請求錯誤
- 20. cURL壞請求錯誤400
- 21. 400:錯誤的請求!
- 22. 在http發佈請求期間angularjs 400錯誤請求
- 23. 大WCF Web服務請求失敗(400)HTTP錯誤請求
- 24. HTTP 400使用Spring Mvc對REST請求的錯誤請求
- 25. HTTP錯誤400.請求形成嚴重。在捲曲請求
- 26. SoapUI請求返回HTTP/1.1 400錯誤請求
- 27. Cakephp 3 HTTP客戶端代理400錯誤請求
- 28. TaxonomyClientService.GetTermSets 400錯誤請求
- 29. HTTPError:HTTP錯誤400:錯誤的請求
- 30. 在ASP.NET中,HTTPHandler可以跳過Global.asax.cs Application_BeginRequest處理程序嗎?
如果這個問題是「把你最喜歡的HTTP.SYS和HTTP 400笑話放在這裏」,那麼現在至少會有238位受訪者回答。 – cfeduke 2008-12-04 22:40:43
你在IIS7的集成管道模式或經典模式下運行嗎?我不確定,但是當使用集成模式時,您可能會看到錯誤,因爲「所有內容」都通過ASP.NET管道。在經典模式下,我認爲你是SOL。但我不確定。 – 2008-12-06 21:35:31