1

我应该期望通过实例化引用服务时触发请求过滤器验证(例如FluentValidation )吗?AppHostBase.ResolveService<>

到目前为止,我仅在使用类型化客户端(特别是在本例中为JsonServiceClient )时才成功收到对 C# 应用程序的正确错误响应。

4

1 回答 1

1

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

服务栈 v4:

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

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

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

HostContext.ServiceController.Execute(requestDto, httpReq)

服务栈 v3:

GetAppHost().Config.ServiceManager.ServiceController.ExecuteMessage(new Message<T>(requestDto), httpReq);
于 2014-01-23T22:44:38.967 回答