2010-04-13 70 views
3

我做了一個從MvcHandler派生的自定義處理程序。我有我的路線使用自定義RouteHandler返回我的新處理程序GetHttpHandler(),並且我重寫ProcessRequest()在我的自定義處理程序中。對GetHttpHandler的調用觸發了一個斷點,我的處理程序的構造函數肯定被調用,但是在基礎MvcHandler而不是ProcessRequest()上調用BeginProcessRequest()。爲什麼IHttpAsyncHandler通過IHttpHandler被調用?

爲什麼在我沒有做任何調用它們時調用異步方法?我不想異步處理,我當然沒有做任何明確的事情來獲得它。我的控制器都來自Controller,而不是AsyncController。

我現在還沒有與我的源代碼,但我可以稍後添加它,如果需要的話。我希望有人可能知道BeginProcessRequest在不需要時可能會被調用的一些原因。

+0

我嘗試了一個帶有System.Web.Mvc源代碼的開箱即用的MVC 2應用程序,並且零更改始終調用BeginProcessRequest,而ProcessRequest則不是。 MVC 2中的默認處理是異步的嗎?我一直在假設默認處理是同步的,但似乎我錯了。 – 2010-04-16 03:59:18

回答

2

布拉德·威爾遜回答我的崗位在Asp.net論壇與下列答案http://forums.asp.net/t/1547898.aspx

簡短的回答:是的。

通過增加AsyncController的, 的MvcHandler類需要是現在的 IHttpAsyncHandler,這意味着 是儘可能的ASP.NET核心 運行而言,入口點 現在BeginProcessRequest和 EndProcessRequest,不是ProcessRequest。

聽起來好像ProcessRequest甚至沒有被調用,但我可能會誤解。我可以說我在測試中沒有看到它。

相關問題