3

我在 WebAPI 控制器中添加了两个过滤器:

[FooFilter]
[BarFilter]
public IQueryable<SomeEntity> GetSomething()
{
    ...

不幸的是,它们是按随机顺序执行的。

对于 MVC 堆栈,Order一个可以做的属性

[FooFilter(Order = 1)]
[BarFilter(Order = 2)]
public IQueryable<SomeEntity> GetSomething()
{
    ...

StrathWeb 上有一篇关于添加对 WebAPI 的Order支持的文章,这似乎已经过时并且不会为我编译。

SO的C#向导对如何实现/存根OrderWebAPI的属性有什么建议吗?

4

1 回答 1

2

文章中的解决方案工作正常并且可以编译。

只需确保使用正确的命名空间,因为某些类在命名空间System.Web.MvcSystem.Web.Http命名空间下具有相同的名称。

这些是您应该引用的完全限定名称:

System.Web.Http.Filters.IFilter
System.Web.Http.Filters.ActionFilterAttribute
System.Web.Http.Filters.FilterScope
System.Web.Http.Filters.FilterInfo
System.Web.Http.Filters.IFilterProvider

另外,请记住,一旦实施,您的过滤器需要开始继承BaseActionFilterAttribute而不是原始的ActionFilterAttribute(这是您获得Position属性的唯一方式)。

于 2013-01-14T17:17:10.083 回答