ASP.NET没有调用注册的MessageHandler

时间:2017-02-08 21:03:54

标签: asp.net .net asp.net-mvc visual-studio asp.net-web-api

我试图获得一个简单MessageHandler的工作演示,如official documentation中所述。

我正在使用Visual Studio 2015,并在" ASP.NET Web应用程序(.NET Framework)"下创建了一个全新的项目。在模板选择中,我的选择是" Web API"。该项目工作正常(F5显示主页)。

我将App_Start\WebApiConfig.cs更改为以下内容:

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            // Configure Web API to use only bearer token authentication.
            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.MessageHandlers.Add( new MyHandler() );               
        }
    }

    class MyHandler : DelegatingHandler
    {
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            try
            {
                Trace.WriteLine("MyHandler is running");
                var result = await base.SendAsync(request, cancellationToken);
                Trace.WriteLine("MyHandler is returning");
                return result;
            }
            catch (Exception ex)
            {
                Trace.WriteLine("MyHandler caught exception: " + ex);

                Trace.WriteLine("MyHandler is rethrowing...");
                throw;
            }
        }
    }

}

当我使用F5运行应用程序时,我可以单步执行MessageHandlers.Add,然后我会看到我的处理程序被添加。我也可以单步执行主控制器。

但是,我的MessageHandlerMyHandler永远不会被调用。

缺少什么?

0 个答案:

没有答案