Я создал ActionFilterAttribute
public class LoggingNHibernateSessionAttribute : ActionFilterAttribute
Целью фильтра, как следует из названия, является регистрация, открытие и фиксация транзакции до и после целевого действия соответственно.
У меня есть проект WebApi (myAPI) (MVC4) и WebApplication (myContent).
Каждый контроллер API в myAPI украшен этим атрибутом.
using myApp.Web.Common.Filters;
namespace myAPI.Web.Api.Controllers
{
[LoggingNHibernateSession]
public class CategoriesController : ApiController
{
Когда действие Http (Get/Post) выполняется внутри ApiController, 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.
Что я здесь делаю неправильно?