使用OAuth的C#Web API请求/响应日志记录

本文关键字:响应 日志 记录 请求 API OAuth C#Web 使用 | 更新日期: 2023-09-27 18:24:09

我很难弄清楚这一点,但当我在Web API(在VS2013中创建)中使用自定义消息处理程序时,没有一个/token请求通过我的处理程序得到处理。

我想做的是通过实现一些日志记录来帮助我们的支持团队保存几天的请求/响应值。这将使他们能够看到尽可能原始的请求和响应。

除了"/token"请求之外,它对所有内容都有效。我们需要处理"/token"answers"/authenticate"的请求和响应,因为我们的大部分支持电话最终都是用户名和密码问题。

我还需要在消息处理程序中执行此操作,以便将代码隔离到消息处理程序。

这是我在一个独立项目中测试的一个示例处理程序。只有ATM才能调试/测试这个问题。我还实现了DelegatingHandler,并获得了相同的结果。

public class MyMessageProcessingHandler : MessageProcessingHandler {
    protected override HttpRequestMessage ProcessRequest(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) {
        Trace.WriteLine(string.Format("{0} {1}", request.Method, request.RequestUri));
        return request;
    }
    protected override HttpResponseMessage ProcessResponse(HttpResponseMessage response, System.Threading.CancellationToken cancellationToken) {
        Trace.WriteLine("response!");
        return response;
    }
}

在WebApiConfig.Register方法中,我将消息处理程序添加到配置的消息处理程序集合中。(我也试过Global.asax.cs是Application_Start方法)

GlobalConfiguration.Configuration.MessageHandlers.Add(new MyMessageProcessingHandler());

顺序似乎无关紧要——我试过把它作为第一行代码,或者最后一行代码。我尝试在添加被动消息处理程序后插入

config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new MyMessageProcessingHandler());

每当我发出api/Values请求或任何api/Controller请求时,自定义消息处理程序都会很好地处理该请求。但是,当我发布(或获取)到/token(正确地为yes)时,自定义消息处理程序不会处理该请求。

我想知道如何使用消息处理程序来处理/token&验证请求。我感谢你的帮助!

谢谢,

-Rick

使用OAuth的C#Web API请求/响应日志记录

我使用了一个自定义的IHttpModule。它最终以我想要的方式做了我想要的事情,让我直接访问请求,并允许我检查它们;甚至认证请求。

感谢所有关注我问题的人。