我们有一些请求过滤器,并且还使用了验证功能。
[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但是没有说明验证的位置......至少我没有看到。
任何帮助都将不胜感激。
答案 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 Filter。 Order of Operations指出全局请求过滤器在Filter Attributes之后执行,优先级为<0
,在优先级为>=0
的过滤器属性之前执行。