ServiceStack原始请求过滤器操作后的DTO

时间:2015-09-08 09:51:58

标签: c# servicestack

美好的一天,有没有办法在响应过滤器中获取原始请求DTO。 在我的请求过滤器中,我操纵了DTO的值。

 appHost.GlobalRequestFilters.Add((req, res, reqDto) =>
        {
            if (reqDto is Granite.Webservice.Resources.MasterItemRequest)
            {
                string code = ((Granite.Webservice.Resources.MasterItemRequest)reqDto).Code;
                ((Granite.Webservice.Resources.MasterItemRequest)req.Dto).Code = code.Replace("^", "");
            }
        });

在上面的代码中,您可以看到我更改代码以排除^字符。请注意这是一个例子,而不是实际的实现,所以不要问为什么^出现。

然后在我的回复中,我想获得请求的原始值和属性代码。

我的回复过滤器:

        appHost.GlobalResponseFilters.Add((req, res, reqDto) =>
        {
            var t = req.OriginalRequest;

        });

如果我查看req OriginalRequest,它没有DTO。此请求也反映了新值。

1 个答案:

答案 0 :(得分:2)

IRequest.OriginalRequestIResponse.OriginalResponse允许您获取基础ASP.NET HttpRequestBase或HttpListenerRequest对象。

相反,您可以从IRequest.Dto属性中获取它,例如:

appHost.GlobalResponseFilters.Add((req, res, resDto) => {
    var dto = req.Dto;
});