Почему IHttpAsyncHandler вызывается через IHttpHandler? - PullRequest
3 голосов
/ 13 апреля 2010

Я сделал собственный обработчик, производный от MvcHandler. У меня есть маршруты, использующие пользовательский RouteHandler, который возвращает мой новый обработчик для GetHttpHandler (), и я переопределяю ProcessRequest () в своем пользовательском обработчике. Вызов GetHttpHandler вызывает точку останова, и определенно вызывается конструктор моего обработчика, но BeginProcessRequest () вызывается на базовом MvcHandler вместо ProcessRequest ().

Почему асинхронные методы вызываются, когда я ничего не сделал для их вызова? Я не хочу асинхронную обработку, и я, конечно, не делал ничего явного, чтобы получить это. Все мои контроллеры происходят от контроллера, а не от AsyncController.

У меня сейчас нет исходного кода, но я могу добавить его позже, если потребуется. Я надеялся, что кто-то может знать некоторые причины, по которым BeginProcessRequest может вызываться, когда он не нужен.

1 Ответ

2 голосов
/ 20 апреля 2010

Брэд Уилсон ответил на мой пост на форумах Asp.net следующим ответом http://forums.asp.net/t/1547898.aspx:

Краткий ответ: да.

С добавлением AsyncController, класс MvcHandler должен быть IHttpAsyncHandler сейчас, что означает что до ядра ASP.NET время выполнения касается точек входа Сейчас BeginProcessRequest и EndProcessRequest, а не ProcessRequest.

Звучит так, будто ProcessRequest больше не вызывается, но я могу ошибаться. Я могу сказать, что я не видел этого в моем тестировании.

...