RequestFilter验证客户端是否依赖?

时间:2014-01-23 22:04:44

标签: c# .net servicestack applicationhost servicestack-bsd

我应该期望FluentValidation通过AppHostBase.ResolveService<>时触发请求过滤器验证(例如instantiating a reference service)吗?

到目前为止,我在使用typed clients(在这种情况下具体为JsonServiceClient)时才成功收到了对我的C#应用​​程序的正确错误响应。

1 个答案:

答案 0 :(得分:1)

你是对的。如果您尝试使用AppHostBase.ResolveService<T>,则它不会执行任何已注册的请求过滤器。基本上它只从AppHost依赖容器中解析服务,只返回Service实例。因此,您的验证器不会被触发。

ServiceStack v4:

正如@mythz指出的那样,您可以使用HostContext的MQ入口点API来执行MQ请求过滤器的调用,从而运行验证。要做到这一点:

HostContext.ServiceController.ExecuteMessage(new Message<T>(requestDto), httpReq);

@mythz还注意到您可以仅使用DTO执行服务,而不必确定要调用的服务和处理方法,但与AppHostBase.ResolveService<T>类似,不会触发请求过滤器。用法:

HostContext.ServiceController.Execute(requestDto, httpReq)

ServiceStack v3:

GetAppHost().Config.ServiceManager.ServiceController.ExecuteMessage(new Message<T>(requestDto), httpReq);