Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OAuth记录C#Web API请求/响应_C#_Asp.net_Oauth_Asp.net Web Api2 - Fatal编程技术网

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

使用OAuth记录C#Web API请求/响应,c#,asp.net,oauth,asp.net-web-api2,C#,Asp.net,Oauth,Asp.net Web Api2,我很难弄清楚这一点,但当我在我的Web API(创建于VS2013)中使用自定义消息处理程序时,没有一个/token请求通过我的处理程序得到处理 我想做的是通过实现一些日志记录来帮助我们的支持团队将请求/响应值保存几天。这将允许他们尽可能原始地查看请求和响应 除了“/token”请求之外,它在工作。我们需要处理“/token”和“/authenticate”的请求和响应,因为我们大部分的支持呼叫都是用户名和密码问题 我还需要在消息处理程序中执行此操作,以便将代码隔离到消息处理程序 这是我在一个独

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

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

除了“/token”请求之外,它在工作。我们需要处理“/token”和“/authenticate”的请求和响应,因为我们大部分的支持呼叫都是用户名和密码问题

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

这是我在一个独立项目中测试的一个示例处理程序。它只用于调试/测试此问题。我还实现了一个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是应用程序启动方法)

顺序似乎并不重要——我已经尝试将其作为第一行代码,或最后一行代码。我已经尝试在被动消息处理程序被添加之后插入

config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new MyMessageProcessingHandler());
每当我发出api/Values请求或任何api/Controller请求时,定制消息处理程序都会很好地处理该请求。但是,当我发布(或获取)到/token(正确地说是)时,自定义消息处理程序不会处理该请求

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

谢谢


-里克

我带了一个定制的IHttpModule。它通过让我直接访问请求并允许我检查它们,以我想要的方式完成了我想要的事情;即使是身份验证请求

感谢大家关注我的问题

config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new MyMessageProcessingHandler());