我试图获得一个简单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
,然后我会看到我的处理程序被添加。我也可以单步执行主控制器。
但是,我的MessageHandler
班MyHandler
永远不会被调用。
缺少什么?