我有一个完全与应用程序逻辑分离的RequestLog功能。
我在预请求过滤器中捕获请求/响应。为了实现这一点,我实例化了一个保存请求上下文的请求范围对象。在一切都被处理之前(在AppHost的OnEndRequest处理程序中),我写入数据库。每个http req一行。
我可以访问响应代码,路径,方法,请求正文,请求标题等。
但是响应流不可用,因为它已经被处理掉了。这背后的逻辑是什么?是这样的,IIS将流内容写入线路,并立即释放资源?有什么办法可以在OnEndRequest处理程序中捕获Response主体吗?
由于
答案 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