我明白,http處理程序處理請求,但這只是理論,因爲我不明白它。許多第三方控件需要在web.config中添加一個http處理程序。有時我們需要使用實現IHttpHandler接口的ProcessRequest方法來創建我們自己的類,但我很難理解Http處理程序適合的位置以及它們的角色是什麼?爲什麼我們需要Http處理程序?
3
A
回答
4
HTTP處理程序是ASP.NET的重要組成部分 - 它們是什麼處理請求和生成響應。在webforms中,它是典型的(對於頁面(aspx,或者可能是ashx)來解釋請求,但這是本身一種處理程序類型(只在主web.config文件中默認映射)。
在添加處理程序的配置文件的情況下,這通常是因爲應用程序是爲網址動態生成內容不神奇映射到現有的文件,或添加一些邏輯爲做文件存在但超出了常規的asp.net。
如果您正在使用ASP.NET MVC,你往往需要這少得多(如果有的話),因爲它是請求規範不直接映射到源代碼樹的ASPX/ASHX。
回想ASP.NET webforms,我使用處理程序的主要時間是在執行諸如二進制下載,文件導出等操作時 - 我不希望它通過webforms aspx管道運行。
0
就我個人而言,我使用它們來處理我所有的AJAX請求。因爲我通常會輸出XML/JSON,所以我使用一個處理程序,因此我不必擔心實現System.Web.UI.Page會帶來的所有開銷。
它們還允許您攔截HTTP管道,這有時可能會有用。 我認爲這一切都取決於你想要達到的目標。
肖恩
+0
HttpHandlers不會攔截管道,因此您可以使用HttpModules。 – 2011-01-05 11:34:25
相關問題
- 1. sigaction - 爲什麼我們不需要重置處理程序?
- 2. 爲什麼sensorManager.registerListener需要處理程序?
- 3. 爲什麼我們需要兩次在tomcat logging.properties中編寫處理程序?
- 4. 爲什麼我們需要瞬態故障處理存儲?
- 5. 我們爲什麼需要,使用貓鼬有什麼好處
- 6. 我需要什麼樣的Http代理?
- 7. 爲什麼我們需要一個數據庫驅動程序?
- 8. 爲什麼waitpid在信號處理程序中需要循環?
- 9. 爲什麼我們需要libnet_do_checksum? HTTP校驗不起作用
- 10. DavLockDB:我們需要什麼?
- 11. 當我們有內核時,爲什麼我們需要驅動程序?
- 12. 爲什麼我們需要simple_one_for_one?
- 13. 爲什麼我們需要TensorFlow tf.Graph?
- 14. 爲什麼我們需要使用prompt.start()?
- 15. 爲什麼我們需要scalaz.stream迭代?
- 16. 爲什麼我們需要WCF
- 17. 爲什麼我們需要Anaconda 2.7?
- 18. 爲什麼我們需要編寫log.isDebugEnabled?
- 19. 爲什麼我們需要ng-click?
- 20. 爲什麼我們需要Control.Lens.Reified?
- 21. 我們爲什麼需要纖維
- 22. 爲什麼我們需要org.junit.ComparisonFailure?
- 23. 爲什麼我們需要addRequestHeader方法?
- 24. 爲什麼我們需要時代?
- 25. 爲什麼我們需要ContinueWith方法?
- 26. 爲什麼我們需要Java NIO Selector?
- 27. 爲什麼我們需要使用ExitWindowsEx
- 28. 爲什麼我們需要包裝類
- 29. 爲什麼我們需要在JavaScript
- 30. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
每個請求都需要由某段代碼處理,無論是.aspx,.ashx,.asmx還是其他。這是通過HttpHandlers完成的,asp.net附帶了一堆預構建處理程序,您可以自由添加更多選擇。 – 2011-01-05 11:36:15