Lors des tests (au moins), nous enregistrons des informations de bas niveau pour chaque contrôleur/action. Tous les contrôleurs sont dérivés de notre BaseController personnalisé qui remplace OnActionExecuting pour effectuer la journalisation.Attribut d'action personnalisée MVC
Nous avons une propriété dans le BaseController qui détermine si cette journalisation se produira ou pas, de sorte qu'un contrôleur peut remplacer OnActionExecuting lui-même, réinitialiser l'indicateur, puis appeler "base.OnActionExecuting". Le drapeau est normalement vrai, mais nous voudrions le désactiver pour certaines requêtes JSON, par exemple.
Ce que nous préférons faire est de créer un contrôleur personnalisé/filtre d'action pour gérer cela, quelque chose comme ceci:
[LogPageAccess(false)]
[HttpGet]
Public ActionResult Foobar()
Je suis sûr qu'il ya une façon de le faire, mais je ne été capable de comprendre comment créer l'attribut personnalisé et le faire réinitialiser le drapeau dans le BaseController.
Merci ...
Avait besoin de quelque chose de similaire, et cela m'a eu où je devais aller. Au lieu de lancer un 'UnauthorizedAccessException' cependant, j'ai utilisé' filterContext.Result = new HttpUnauthorizedResult(); 'que je me sens mieux dans la page MVC. Vous pouvez consulter [la documentation de MSDN pour 'UnauthorizedAccessException'] (http://msdn.microsoft.com/en-us/library/system.unauthorizedaccessexception.aspx) pour comprendre pourquoi je n'ai pas trouvé cela approprié dans ce cas. –