我创建了一个 ActionFilterAttribute
public class LoggingNHibernateSessionAttribute : ActionFilterAttribute
顾名思义,过滤器的目的是分别在目标操作之前和之后记录并打开和提交事务。
我有一个 WebApi(myAPI) 项目 (MVC4) 和一个 WebApplication(myContent)。
myAPI 中的每个 Api Controller 都使用此属性进行修饰。
using myApp.Web.Common.Filters;
namespace myAPI.Web.Api.Controllers
{
[LoggingNHibernateSession]
public class CategoriesController : ApiController
{
当在 ApiController 中执行 Http 操作(Get/Post)时,ActionFilter 会被执行,并且可以正常工作。
问题:在 WebApplication(myContent) 中,我还使用 ActionFilter 装饰了这些控制器。
using myApp.Web.Common.Filters;
namespace myContent.Web.Content.Places.Controllers
{
[LoggingNHibernateSession]
public class PlacesController : Controller
{
但是在这里,当一个动作在控制器内部执行时,ActionFilter 不会被执行。
ActionFilter 属于System.Web.Http.Filters;
我读过一些帖子,他们说要使用 System.Web.Mvc 过滤器。所以我将 ActionFilter 更改为来自System.Web.Mvc 当我切换它时,ActionFilter 也停止在 WebApi 中工作。
我在这里做错了什么?