2013-04-17 9 views
6

Possiedo un'applicazione Web MVC .Net (non WebAPI) e voglio intercettare tutte le chiamate all'app Web prima che raggiungano il controller, controllare un valore nelle intestazioni delle richieste e fare qualcosa se il valore non è presente (come presentare un 404). Qual è il modo ideale per farlo? Tieni presente che questa non è un'applicazione API Web, ma solo una semplice applicazione web.MVC Web. Net: intercetta tutte le chiamate prima di raggiungere il controller?

+1

possibile duplicato del [ASP.NET MVC 4 intercetta tutte le richieste in arrivo] (http://stackoverflow.com/questions/11726848/asp-net-mvc-4-intercept-all-incoming-requests) –

+0

Dopo aver controllato il valore, hai intenzione di passare la richiesta al controller? – Floremin

risposta

5

A seconda di che cosa specificamente si vuole fare, è potrebbe utilizzare un controller predefinito esteso a tutti gli altri controller. In questo modo puoi annullare lo OnActionExecuting o Initialize e fare il tuo controllo lì.

public class ApplicationController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     //do your stuff here 
    } 
} 

public class YourController : ApplicationController 
{ 

} 
3

Stai cercando filtri azione globali.

Creare una classe che eredita ActionFilterAttribute, ignorare OnActionExecuting() per eseguire la lavorazione, e aggiungere un istanze a raccolta filtro globale in Global.asax.cs (all'interno RegisterGlobalFilters())

+0

Utilizzando questo approccio, è possibile specificare per quali percorsi si desidera eseguire questa operazione? – ggderas

Problemi correlati