我在我的項目中添加了一個通用處理程序(ashx),但我無法在web.config中看到它的註冊並且它可以工作。怎麼來的 ?我的意思是不應該Visual Studio將它添加爲web.config中的http處理程序?或者是因爲我沒有覆蓋任何預定義的處理程序,而是我專門調用它。Web.Config中的通用處理程序註冊
回答
通常,Asp.net中的通用處理程序是爲支持一些小任務而設計的,例如創建一些不需要Asp.net進程的縮略圖。所以,你可以把它稱爲一個簡單的asp.net頁面,如「www.somesite.com/Thumbnail.ashx?filename=abc.jpg」。
順便說一下,如果你想映射這個處理程序與一些URL像下面的URL。
- www.somesite.com/Thumbnail/abc.jpg
- www.somesite.com/Thumbnail/dog.jpg
- www.somesite.com/Thumbnail/cat.jpg
您需要使用一些URL路由,如Web表單路由(基於System.Routing)來映射它。所以,你可以使用下面的代碼來完成上面的例子。
public static void RegisterRoutes(RouteCollection routes)
{
routes.Map("Thumbnail", "Thumbnail/{filename}").To("~/Thumbnail.ashx");
}
有關Web Form映射的更多信息,請參閱Phil Haack的Using Routing With Web Forms。
但是,如果您需要創建一些Http處理程序,它可以處理您的應用程序的某些指定文件類型,如JavaScript文件處理程序。您必須創建從IHttpHandler繼承的類。之後,您必須在web.config文件中註冊它,以獲取由此處理程序處理的指定文件類型。請看HTTP Handlers and HTTP Modules in ASP.NET Mansoor Ahmed Siddiqui
PS。如果使用通用處理程序在web.config文件中註冊,則需要創建2個文件,分別是SomeHandler.ashx和SomeHandler.ashx.cs。創建一些簡單的文件處理程序相當複雜。另一方面,您只能創建一個繼承自IHttpHandler類的cs文件來完成同樣的任務。
處理程序只是您可以瀏覽到的另一種文件類型。 HTTP模塊必須在web.config中註冊,但不一定是處理程序。
我相信你可以截取每個HTTP請求思維的HTTP模塊代替HTTP處理程序
的HTTP模塊的現場,並可以選擇做一些操作在HTTP管道或完全攔截呼叫。模塊必須在web.config
在另一方面,被註冊的HttpHandler的工作幾乎完全一樣的ASPX頁面,除了它是一個比較輕便,不處理你做的所有頁面事件不需要諸如圖像處理器之類的東西。
感謝您的好答案,但實際上我並沒有混淆Httphandler與httpModule我有點知道他們是什麼。我問爲什麼我註冊httphandler :)謝謝壽。 – Tarik 2009-10-13 05:32:38
- 1. 在web.config中註冊ASP.NET Http處理程序有多種方法?
- 2. Android:使用處理程序註冊SensorEventListener?
- 3. 中斷處理程序未註冊
- 4. 在web.config中註冊處理程序時可以使用相對路徑
- 5. Chrome中的協議處理程序通過註冊表
- 6. WPF MVVM未註冊的處理程序
- 7. 註冊處理程序在ASP.NET 5
- 8. 註冊函數處理程序
- 9. 註冊每個類處理程序
- 10. jQuery多處理程序註冊問題
- 11. 沒有處理程序註冊CQRS-ES
- 12. Microsoft.AspNet.WebHooks.Receivers。* MVC 5未註冊處理程序
- 13. 註冊事件處理程序在CQRS
- 14. 如何向Observable.FromEventPattern中使用的事件註冊/取消註冊處理程序?
- 15. 爲未處理的異常註冊處理程序
- 16. 的Android - 註冊我的應用程序來處理URL
- 17. 如何在C++中註冊線程退出處理程序?
- 18. 註冊鼠標處理程序但處理程序不內聯,在javafx
- 19. 禁用html元素(IE8)的註冊鼠標處理程序
- 20. Java中的Pentaho PDF生成 - 沒有註冊根處理程序
- 21. 的JavaScript - 協議處理程序註冊,但,閱讀從Windows註冊表失敗
- 22. 註冊/取消註冊事件處理程序的一般方法
- 23. 如何註冊子進程的信號處理程序?
- 24. 通過註冊表而不是TLB註冊應用程序
- 25. 使用Android活動註冊「onDestroy事件處理程序」
- 26. 重複調用PushNotificationIOS註冊處理程序
- 27. 處理器註冊 - 應用程序變量關聯
- 28. 註冊應用程序以處理USB設備連接
- 29. 使用JS和Canvas註冊事件處理程序
- 30. 如何在Javascript中註冊window.external.notify事件處理程序
謝謝,現在有道理。 – Tarik 2009-10-12 23:33:23
好解釋1 + ..... – 2009-10-13 09:45:48