【发布时间】:2013-05-19 22:20:57
【问题描述】:
我已经创建了一个 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 中工作。
我在这里做错了什么?
【问题讨论】:
标签: asp.net-mvc-4 asp.net-web-api action-filter actionfilterattribute