Servicestack - 操作顺序流畅的验证和请求过滤器

ozc*_*cho 2 c# fluentvalidation servicestack

我们有一些请求过滤器,也使用验证功能.

[AttributeUsage(AttributeTargets.Method, Inherited = true)]
public class MyFilterAttribute : Attribute, IHasRequestFilter
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

在AppHost中:

    public override void Configure(Container container)
    {
        ....
        Plugins.Add(new ValidationFeature());
        ....
    }
Run Code Online (Sandbox Code Playgroud)

我需要在请求过滤器之后运行流畅的验证,因为一些过滤器会将数据添加到dto然后进行验证.我已经看到了操作顺序但是没有说明验证的位置......至少我没有看到.

任何帮助,将不胜感激.

myt*_*thz 5

像ServiceStack中的大多数东西一样的ValidationFeature只是一个简单的插件,其源代码很容易找到,通过转到ServiceStack GitHub repo按'T'激活GitHub的查找文件功能并开始输入类名的部分,例如VFe将带来ValidationFeature直到第一个结果.

ValidationFeature中,您可以在IPlugin.Register(IAppHost)功能中看到它的工作原理:

public void Register(IAppHost appHost)
{
    if(!appHost.RequestFilters.Contains(ValidationFilters.RequestFilter))
        appHost.RequestFilters.Add(ValidationFilters.RequestFilter);
}
Run Code Online (Sandbox Code Playgroud)

如上所示,仅注册全局请求过滤器.该操作顺序指出后全局请求过滤器执行过滤属性与优先级<0和过滤器之前,优先级属性>=0.