我最近为我的应用程序创建了一个日志记录解决方案,我的Web服务器将所有请求/响应数据通过HTTP发送到日志记录服务器。我已经使用委托处理程序
完成了这项工作http://www.asp.net/web-api/overview/advanced/http-message-handlers
这非常有效,但我很好奇是否有办法以不需要我在将消息发送回客户端之前记录消息的方式执行此操作。记录消息不会为最终用户添加任何值,因此我希望他们在获取数据之前不必等待记录逻辑完成。
我想我正在寻找的是某种类型的钩子,在消息已经返回到客户端之后被调用,但是在线程消失之前,我仍然可以访问请求和响应。< / p>
我要求的太多了吗?
谢谢!
答案 0 :(得分:1)
您可以创建一个执行日志记录的独立线程,并将响应返回给客户端浏览器。
例如,如果使用Web API 2:
public IHttpActionResult Get(int id)
{
//create response_data
new System.Threading.Tasks.Task(() =>
{
//do the logging
}).Start();
return Content(HttpStatusCode.Accepted, response_data);
}