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

时间:2013-04-09 06:31:08

标签: c# servicestack fluentvalidation

我们有一些请求过滤器,并且还使用了验证功能。

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

在AppHost中:

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

我需要在请求过滤器之后运行流畅的验证,因为有些过滤器会将数据添加到dto然后进行验证。我看过Order of Operations但是没有说明验证的位置......至少我没有看到。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

ValidationFeature与ServiceStack中的大多数内容一样只是一个简单的Plugin,可以通过转到ServiceStack GitHub repo按'T'来激活GitHub's find files来轻松找到其源代码功能并开始输入部分类名,例如VFe会使ValidationFeature达到第一个结果。

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

public void Register(IAppHost appHost)
{
    if(!appHost.RequestFilters.Contains(ValidationFilters.RequestFilter))
        appHost.RequestFilters.Add(ValidationFilters.RequestFilter);
}

如上所示,只注册Global Request FilterOrder of Operations指出全局请求过滤器在Filter Attributes之后执行,优先级为<0,在优先级为>=0的过滤器属性之前执行。