Registre mondial des filtres dans ASP.Net MVC 4 et Autofac
J'ai un filtre comme celui-ci:
public class CustomFilterAttribute : ActionFilterAttribute, IAuthorizationFilter
{
public MyPropery Property { get; set; }
....
}
J'en ai besoin pour être exécutée pour chaque actions dans mon projet
J'ai essayé de l'inscrire dans la GlobalFilters mais ma propriété à ne pas avoir injecté
J'ai essayé Cette solution enregistrer mon filtre mais il n'est pas appelée
Aucune idée sur comment faire?
Vous devez vous connecter pour publier un commentaire.
Il y a une nouvelle façon de s'inscrire MVC filtres globaux dans AutoFac. Tout d'abord, supprimer le filtre d'enregistrement de votre
RegisterGlobalFilters
parce que nous aurons Autofac gérer l'ajout à nos contrôleurs/actions au lieu de la MVC.Ensuite, enregistrez votre conteneur comme suit:
Noter qu'en passant dans le
Controller
classe dans le prolongementAsActionFilterFor()
nous disons AutoFac pour appliquer ce filtre à toutes les classes qui dérivent de laController
classe (ce qui, en MVC, est de tous les contrôleurs). Depuis que nous appelonsAsActionFilterFor()
sans arguments, nous sommes également en précisant que nous voulons avoir le filtre appliqué à l'ensemble des actions dans les limites des contrôleurs. Si vous souhaitez appliquer un filtre à une sélectionnez contrôleur et l'action, vous pouvez utiliser des expressions lambda comme suit:Si votre action prend un paramètre, utilisez la
default
mot-clé à préciser:Noter que vous devez utiliser une autre méthode d'extension en fonction du type de filtre vous vous inscrivez, ici, sont pris en charge types de filtre:
Vous devez maintenant utiliser Pete solution maintenant pour ce faire. Merci à lui pour une mise à jour de la solution.
J'ai enfin fait, voici comment le faire:
D'abord créer votre attribut avec un constructeur avec toutes les dépendances
Enregistrer tout ce que vous avez besoin dans autofac
Enregistrer votre filtre global comme ça
Assurez-vous que dans votre global.asax vous vous inscrivez d'abord Autofac et puis les filtres globaux.
Maintenant, vous n'avez pas besoin de la propriété de l'injection de plus, constructeur de l'injection du bon travail, ce qui est une bonne chose!