【发布时间】:2013-09-18 19:05:33
【问题描述】:
我创建了 2 个项目:
- 普通、基本的 ASP.NET MVC 4 应用程序
- 基本的 ASP.NET WebAPI 应用程序
我所做的就是将源自DelegatingHandler 的自定义消息处理程序添加到它们两者。这里是:
public class MyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken);
}
}
我都在global.asax注册了:
GlobalConfiguration.Configuration.MessageHandlers.Add(new MyHandler());
我在
中放了一个断点return base.SendAsync(request, cancellationToken);
ASP.NET MVC 和 ASP.NET WebAPI 的区别在于,当我调用 ASP.NET MVC 应用程序 (http://localhost:4189/Something) 不会触发断点。但是,当我调用 Web API (http://localhost:7120/api/values) 时,会触发断点 。
这是为什么呢?这些应用程序类型的执行流程有什么不同吗?
另外,当我尝试请求普通的Controller,而不是ApiController的WebAPI应用程序,比如http://localhost:7120/Home,断点没有触发。
【问题讨论】:
-
那是因为 MessageHandlers 只在 WebApi 管道中被调用,而不是 MVC 管道。
-
@MystereMan 的评论是正确答案。
-
@MikeWasson 是的,这是正确的。我将发布另一个关于这些管道特定差异的问题。
-
@MystereMan,我建议您发布此问题的答案并详细说明管道有何不同。
-
@MikeWasson 感谢您关于该主题的所有文章。他们非常有帮助。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api