在我之前的项目中,我使用类似于ServiceStack的框架(Agatha RRSL),因为一切都是由Request,Response和Handler组成的。它还有可以附加到处理程序的拦截器,您也可以将其他接口注入到处理程序中。我可以使用它来打开事务BeforeHandling,在AfterHandling中访问请求和响应,创建审计,保存到数据库并在需要时关闭事务。
我尝试与SerivceStack进行类似的实验。但似乎有过滤器,我不能一起抓住请求和响应?
使用自定义ServiceRunner。当我尝试调试OnAfterExecute(...)时,我可以在IRequestContext {ServiceStack.ServiceHost.HttpRequestContext}中看到我的请求名称。但只是名称,我无法弄清楚如何检索实际的请求对象以使用响应对象。
我还没弄清楚的另一件事是,是否可以将自动有线服务接口注入其中,如数据库上下文或审计服务。也许这个在管道中走得太远了?
最后一点是,似乎我只能注册一个自定义服务运行器?使用拦截器,我可以丢弃一堆它们,它们会相互缠绕。
有什么想法?感谢
答案 0 :(得分:3)
RequestContext还包含您可以访问的HttpRequest和HttpResponse:
var httpReq = RequestContext.Get<IHttpRequest>();
var httpRes = RequestContext.Get<IHttpResponse>();
有关详细信息,请参阅Accessing HTTP Specific features上的文档。