服务堆栈-操作顺序流畅的验证和请求过滤器

本文关键字:验证 请求 过滤器 堆栈 操作 顺序 服务 | 更新日期: 2023-09-27 18:08:05

我们有几个请求过滤器,也利用了验证功能。

[AttributeUsage(AttributeTargets.Method, Inherited = true)]
public class MyFilterAttribute : Attribute, IHasRequestFilter
{
   ...
}
在AppHost:

    public override void Configure(Container container)
    {
        ....
        Plugins.Add(new ValidationFeature());
        ....
    }

我需要流畅的验证在请求过滤器之后运行,因为一些过滤器将数据添加到然后验证的dto中。我看过《操作顺序》,但这并没有说明验证适用于哪里……至少我没看见。

服务堆栈-操作顺序流畅的验证和请求过滤器

ValidationFeature和ServiceStack中的大多数东西一样,只是一个简单的插件,它的源代码可以很容易地找到,通过到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);
}
上面看到的

只是注册了一个全局请求过滤器。操作顺序指出全局请求过滤器在优先级为<0的过滤器属性之后和优先级为>=0的过滤器属性之前执行。