3

当您启用 ValidationFeature 插件时,有没有办法记录在 ResponseStatus 中填充的验证结果?

据我所知,任何进来的请求都会得到验证,如果验证通过,就会进入服务。使用请求过滤器我可以记录进来的请求,但是使用响应过滤器我只能记录有效的请求。

我试图记录所有响应,尤其是由于验证错误而返回的 HttpStatus 400 (Bad request)。

我也尝试过使用 RequestLog 插件,但据我了解,记录的内容只是有效的请求(即发送到服务的请求)。

我希望你明白我想说什么。

4

2 回答 2

4

查看7digital 如何自定义 ServiceStack 的验证功能以支持日志记录。

相关功能

新的 API 支持ServiceRunner您可以覆盖的概念,以添加您自己的事件和异常挂钩,您可以在 wiki 中阅读

还有内置的请求记录器,可让您了解最近处理的请求的详细信息。

如果您想查看验证功能的日志记录,请在 GitHub 项目上创建一个问题。

于 2012-09-27T16:27:16.073 回答
1

从 ValidationFeature 插件记录错误的快速方法就是这样:

public override void Configure(Container container)
{
    ...etc...

    Plugins.Add(new RequestLogsFeature() { etc });
    Plugins.Add(new ValidationFeature()
    {
        ErrorResponseFilter = MyValidationError
    });

    ...etc...
}

public object MyValidationError(ValidationResult validationResult, object errorDto)
{
    Container.Resolve<IRequestLogger>().Log(null, null, errorDto, TimeSpan.Zero);
    return errorDto;
}

但是,就我而言,我意识到在服务本身中记录验证错误不是合适的地方。相反,我将这些错误记录在使用该服务的应用程序中。

于 2015-11-23T20:58:29.190 回答