Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# InvalidCastException,返回ServiceStack.CompressedResult而不是数据_C#_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# InvalidCastException,返回ServiceStack.CompressedResult而不是数据

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) {

正在尝试从一个servicestack服务内部调用另一个servicestack服务

        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);
}