服务堆栈-操作顺序流畅的验证和请求过滤器
本文关键字:验证 请求 过滤器 堆栈 操作 顺序 服务 | 更新日期: 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
的过滤器属性之前执行。