在ServiceStack中访问请求,响应,服务和Db上下文等

时间:2013-10-10 01:23:21

标签: servicestack code-injection runner filterattribute

在我之前的项目中,我使用类似于ServiceStack的框架(Agatha RRSL),因为一切都是由Request,Response和Handler组成的。它还有可以附加到处理程序的拦截器,您也可以将其他接口注入到处理程序中。我可以使用它来打开事务BeforeHandling,在AfterHandling中访问请求和响应,创建审计,保存到数据库并在需要时关闭事务。

我尝试与SerivceStack进行类似的实验。但似乎有过滤器,我不能一起抓住请求和响应?

使用自定义ServiceRunner。当我尝试调试OnAfterExecute(...)时,我可以在IRequestContext {ServiceStack.ServiceHost.HttpRequestContext}中看到我的请求名称。但只是名称,我无法弄清楚如何检索实际的请求对象以使用响应对象。

我还没弄清楚的另一件事是,是否可以将自动有线服务接口注入其中,如数据库上下文或审计服务。也许这个在管道中走得太远了?

最后一点是,似乎我只能注册一个自定义服务运行器?使用拦截器,我可以丢弃一堆它们,它们会相互缠绕。

有什么想法?感谢

1 个答案:

答案 0 :(得分:3)

RequestContext还包含您可以访问的HttpRequest和HttpResponse:

var httpReq = RequestContext.Get<IHttpRequest>();
var httpRes = RequestContext.Get<IHttpResponse>();

有关详细信息,请参阅Accessing HTTP Specific features上的文档。