ServiceStack - 捕获响应主体的OnEndRequest

时间:2014-02-26 20:32:14

标签: servicestack

我有一个完全与应用程序逻辑分离的RequestLog功能。

我在预请求过滤器中捕获请求/响应。为了实现这一点,我实例化了一个保存请求上下文的请求范围对象。在一切都被处理之前(在AppHost的OnEndRequest处理程序中),我写入数据库。每个http req一行。

我可以访问响应代码,路径,方法,请求正文,请求标题等。

但是响应流不可用,因为它已经被处理掉了。这背后的逻辑是什么?是这样的,IIS将流内容写入线路,并立即释放资源?有什么办法可以在OnEndRequest处理程序中捕获Response主体吗?

由于

2 个答案:

答案 0 :(得分:1)

不,ServiceStack不会将它直接写入ASP.NET响应的Response流缓冲。

如果Custom ServiceRunner,您可以添加全局响应过滤器或request reaches that far以捕获服务响应,但可以通过关闭响应在整个请求管道中随时将请求短路。

答案 1 :(得分:0)

我在ServiceRequestLogger中捕获响应时遇到了同样的问题。阅读这篇文章 - 它在4.0.39+(目前预发布)中解决了

ServiceStack response filter "short circuiting" causing problems