如何在ASP.NET Web API中记录RAW HTTP请求,无论是否将其路由到控制器



即使请求畸形,或出于某些其他原因,也可以将每个HTTP请求记录到ASP.NET Web API,即使该请求也无法路由到一个控制器。/p>

例如,如果邮政方法具有订单模型,则不正确的请求将阻止其到达控制器的邮政方法。我想提醒某人,以便可以采取行动来防止未来的失败。

有没有办法从控制器上游捕获这些请求?

要么使用跟踪,您需要实现ItraceWriter,如下所示

http://www.asp.net/web-api/overview/testing-and-debugging/tracing-in-aspnet-web-api

或实现消息处理程序

http://www.strathweb.com/2012/05/implementing-message handlers-to-track-track-your-asp-net-web-api-usage/

http://www.asp.net/web-api/overview/working-with-http/http-message handlers

消息处理程序允许您在httpcontrollerdispatcher之前更改消息,因此您可以通过路由和操作方法来处理常见问题。

但是,由于最后一个托管在IIS上托管时,最后一个毫不犹豫地使用AppFabric Loggging,因为它可以在请求之前出现问题时为您提供信息。它在Web应用程序中处理具有全局错误的方案,例如Web.config。

的错误。

如果在ASP.NET Web API中启用ASP.NET Web API中的跟踪,则内置的跟踪基础结构将记录您所关注的信息。

在失败的内容协商的情况下,您会看到httperror出现在DefaultContentNegotiator中。

这是此类型错误的简单跟踪的示例:

defaultContentNegotiator; Connotiate; type ='httperror', formatters = [jsonmediatypeformattertracer,xmlMediatypeFormatterTracer, formurlencodedmediatypeformattertracer, formurlencodedmediatypeformattertracer]

Trace Writer被授予Tracerecord作为其输入,其中包含请求信息以及您可能要使用的任何自定义信息。

Web API将使用您配置的Trace Writer在请求的整个生命周期中跟踪信息。您可以使用Trace Writer跟踪生命周期事件以及您自己的控制器代码。

相关内容

最新更新