美好的一天,有没有办法在响应过滤器中获取原始请求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。此请求也反映了新值。
答案 0 :(得分:2)
IRequest.OriginalRequest
和IResponse.OriginalResponse
允许您获取基础ASP.NET HttpRequestBase或HttpListenerRequest对象。
相反,您可以从IRequest.Dto
属性中获取它,例如:
appHost.GlobalResponseFilters.Add((req, res, resDto) => {
var dto = req.Dto;
});