2009-03-18 9 views
1

J'essaye d'instancier un service et d'authentifier l'utilisateur courant dans la méthode Application_PreRequestHandlerExecute(), puis de disposer de ce service dans la méthode * Application_PostRequestHandlerExecute() de global.asax.cs classe. L'un des éléments dont j'ai besoin pour ce processus est le nom d'organisation qui est ajouté au début de ma route d'URL. J'ai mappé une route qui ressemble à ceci "{orgName}/{contrôleur}/{action}/{id}"Routage MVC ASP.Net et PreRequestHandler

Donc ma question est, dans une application ASP.Net MVC est-il possible d'accéder à l'un des informations de routage (ou accéder en quelque sorte le "orgname" dans mon instance) dans l'événement Application_PreRequestHandlerExecute()? Si cela n'est pas possible, existe-t-il un autre moyen de connecter un MvcHandler et de faire quelque chose de similaire (peut-être devrais-je créer un filtre personnalisé?)

Répondre

1

Vous avez besoin du "RequestContext" pour trouver toutes les valeurs de route. Je ne connais pas d'autre moyen de les obtenir que dans le contrôleur.

Vous devez implémenter un "ActionFilterAttribute", puis décorer vos contrôleurs avec.

le ActionFilter a les méthodes

//  Called after the action method executes. 
public virtual void OnActionExecuted(ActionExecutedContext filterContext); 
//  Called before the action method executes. 
public virtual void OnActionExecuting(ActionExecutingContext filterContext); 

que vous pouvez faire toutes sortes de choses amusantes dans.