1

我有一个 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 中。

谢谢

4

0 回答 0