Asp.net mvc ServiceStack自动查询MVC控制器
我正在MVC中试验ServiceStack,使用标准服务器端控制器创建视图模型。没有对在/api注册的任何服务的jquery调用(或任何直接调用)。由于SS允许我们直接使用以下方式解析服务: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派生的任何类创建一个服务,但我没有
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))