我有一个 MVC/Web API、NET4.5 应用程序。我创建了自己的自定义处理程序,如下所示:
public class MyMessageHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var requestDate = request.Headers.Date;
// do something with the date ...
var response = await base.SendAsync(request, cancellationToken);
var responseDate = response.Headers.Date;
// do something with the date ...
return response;
}
}
这适用于 API 请求(http://server.com/api/resource)。
我还配置了 web.config 以通过托管模块运行所有请求:
<modules runAllManagedModulesForAllRequests="true">
如果对“html”或“js”文件的请求进入,它不会通过我的 MyMessageHandler。我愿意。
此外,不确定这是否有帮助,但对静态文件的请求确实通过 global.asax 中的 Application_BeginRequest 和 Application_EndRequest。我可以把我的代码放在那里,但我希望它在 MyMessageHandler 中。
谢谢