Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Asp.net mvc ServiceStack自动查询MVC控制器_Asp.net Mvc_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Asp.net Mvc,servicestack" /> servicestack,Asp.net Mvc,servicestack" />

Asp.net mvc ServiceStack自动查询MVC控制器

Asp.net mvc ServiceStack自动查询MVC控制器,asp.net-mvc,servicestack,Asp.net Mvc,servicestack,我正在MVC中试验ServiceStack,使用标准服务器端控制器创建视图模型。没有对在/api注册的任何服务的jquery调用(或任何直接调用)。由于SS允许我们直接使用以下方式解析服务: using (var dr = HostContext.ResolveService<DataReportService>(base.HttpContext)) 但是,我还没有找到一种使用新的自动查询功能来实现这一点的方法。我知道它会自动为从QueryBase派生的任何类创建一个服务,但我没有

我正在MVC中试验ServiceStack,使用标准服务器端控制器创建视图模型。没有对在/api注册的任何服务的jquery调用(或任何直接调用)。由于SS允许我们直接使用以下方式解析服务:

using (var dr = HostContext.ResolveService<DataReportService>(base.HttpContext))
但是,我还没有找到一种使用新的自动查询功能来实现这一点的方法。我知道它会自动为从QueryBase派生的任何类创建一个服务,但我没有幸运地解决它。如果我试图解析运行时使用的名称,那么我将不会编译(显然)。如果我尝试这样的事情

using (var dr = HostContext.ResolveService<AutoQueryServiceBase>(base.HttpContext))
使用(var dr=HostContext.ResolveService(base.HttpContext))

那么它也不会工作,因为那只是一个基类,而不是实际注册的实例。我知道我可以在JsonServiceClient上实现这一点,但我真的很想尝试直接调用方法。创建我自己的服务来包装任何自动查询都是可行的,但它似乎违背了自动创建的目的。尽管如此,我看不到任何其他方式继续下去。我很想听听您的想法。

您可以使用
HostContext.ServiceController.Execute
方法,而不是使用
ResolveService
方法来获取服务并自己调用执行方法,该方法允许您传入请求DTO,请求DTO将在action方法上执行

var-dataReport=新数据报告
{
IsArchived=错误,
ReportDate=DateTime。现在,
ReportType=Model.ReportType
};
var drId=HostContext.ServiceController.Execute(dataReport);

我希望这能有所帮助。

@Scott当我使用HostContext.ServiceController.Execute时,它似乎无法访问现有会话。这是否意味着我必须手动传入任何会话变量?@vonec
Execute
方法有一个可选的第二个参数,它接受HTTP请求
httpReq
。传递此消息将允许您访问会话<代码>HostContext.ServiceController.Execute(requestDto,httpReq)
using (var dr = HostContext.ResolveService<AutoQueryServiceBase>(base.HttpContext))