2010-04-13 95 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甚至没有被调用,但我可能会误解。我可以说我在测试中没有看到它。

相关问题