Réponse courte: MVC et Web API filtres ne sont pas de la croix-compatible, et si vous voulez vous inscrire à travers le monde, vous devez utiliser la configuration appropriée des classes pour chaque.
Réponse longue: ASP.NET MVC et Web API sont délibérément conçus pour fonctionner d'une manière similaire, mais ils sont en fait des créatures différentes.
L'API Web de la vie en vertu de l' System.Web.Http
d'espace de noms, alors que MVC vit sous l' System.Web.Mvc
d'espace de noms. Les deux seront heureux de vivre côte à côte, mais l'un ne contient pas l'autre et malgré les similitudes dans le modèle de programmation, les implémentations sous-jacentes sont différentes. Tout comme les contrôleurs MVC et Web API contrôleurs hériter de base différentes classes de contrôleur (MVC est simplement nommée Controller
et Web API est nommé ApiController
) MVC filtres et Web API filtres hériter de différents FilterAttribute
classes (les deux partagent le même nom, dans ce cas, mais sont des classes séparées, qui vivent dans leurs espaces de noms).
L'API Web mondial filtres sont enregistrés par le biais de l' HttpConfiguration
d'objets disponibles dans l' Register
méthode WebApiConfig.cs si vous utilisez un modèle de projet avec WebActivator:
public static void Register(HttpConfiguration config)
{
//stuff before
config.Filters.Add(new MyWebApiFilter());
//stuff after
}
ou sinon dans le monde.asax.cs:
GlobalConfiguration.Configuration.Filters.Add(new MyWebApiFilter());
Mvc mondiale filtres sont enregistrés par un GlobalFilerCollection
de l'objet, qui est à votre disposition par de la RegisterGlobalFilters
méthode de FilterConfig.cs pour les projets qui sont à l'aide de WebActivator:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//stuff before
filters.Add(new MyMvcFilter());
//stuff after
}
}
ou dans le monde.asax.cs fichier par GolbalFilters.Filters
de la collecte pour les personnes sans WebActivator:
GlobalFilters.Filters.Add(new MyMvcFilter());
Il est intéressant de noter que dans les deux cas, vous n'avez pas besoin d'hériter de l' FilterAttribute
de type API Web Filtres besoin d'implémenter le Système.Web.Http.IFilter interface, et MVC filtre d'enregistrement des vérifications pour s'assurer que votre classe hérite d'un d'une poignée de filtre interfaces définies dans le Système.Web.Mvc espace de noms.