C# InvalidCastException,返回ServiceStack.CompressedResult而不是数据
正在尝试从一个servicestack服务内部调用另一个servicestack服务C# InvalidCastException,返回ServiceStack.CompressedResult而不是数据,c#,
servicestack,C#,
servicestack,正在尝试从一个servicestack服务内部调用另一个servicestack服务 using (var service = base.ResolveService<MyService>()) { var vds = (List<MyData>)service.Any(params); foreach (var vd in vds) {
using (var service = base.ResolveService<MyService>())
{
var vds = (List<MyData>)service.Any(params);
foreach (var vd in vds)
{
DoStuff(vd);
}
}
使用(var service=base.ResolveService())
{
var vds=(列表)service.Any(参数);
foreach(vds中的var vd)
{
多斯塔夫(vd);
}
}
调用服务。任何(…)调用都会生成以下异常:
无法将“ServiceStack.CompressedResult”类型的对象强制转换为“System.Collections.Generic.List`1[DV.Svc.Model.MyData]”类型
MyService确实使用缓存(return base.Request.ToOptimizedResultUsingCache…)这是因为当您返回时:
base.Request.ToOptimizedResultUsingCache(...)
您在创建缓存的第一个请求中返回DTO,但在随后的请求中,它将返回服务响应的最佳缓存版本(例如,缩减的JSON响应)
您应该重构它,以便访问服务的非缓存版本,例如:
using (var service = base.ResolveService<MyService>())
{
var vds = service.GetMyData(params);
foreach (var vd in vds)
{
DoStuff(vd);
}
}
它可以用来代替直接调用内部服务,例如:
var vds = MyRepository.GetMyData(params);
foreach (var vd in vds)
{
DoStuff(vd);
}
var vds = MyRepository.GetMyData(params);
foreach (var vd in vds)
{
DoStuff(vd);
}