Non sono sicuro che sia possibile.
Ho individuato lo HttpContext.Current
e ho rilevato che nella seconda (e successive richieste), la raccolta HttpContext.Current.Items
contiene un'istanza di una classe System.Web.Routing.UrlRoutingModule.RequestData
. Sfortunatamente, questa classe è privata quindi non puoi accedere ai suoi dati. Nel debugger, tuttavia, sembra che questo contenga le informazioni che stai cercando (non sono sicuro del motivo per cui non esiste sulla prima richiesta).
In alternativa, è sufficiente utilizzare un filtro azione e aggiungerlo a una classe BaseController derivante da tutti i controller? Qualcosa di simile:
public class LoggingActionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
var controllerName = filterContext.Controller.ControllerContext.RouteData.Values["controller"];
var actionName = filterContext.Controller.ControllerContext.RouteData.Values["action"];
}
}
quindi creare una classe di controller di base con questo attributo:
[LoggingAction]
public abstract class BaseController : Controller
{
}
yerp ... stiamo ereditando da un controller di base in modo che l'approccio ActionFilter funzioni –
btw, abbiamo già avuto una o verride di 'Initialize (RequestContext requestContext)' così ho inserito il codice che lo riempie nel contesto lì. Sembra funzionare bene. –
non funziona se vogliamo cambiare la lingua nel thread corrente. (Testato solo su MVC 3 ...). Hai idea di come possiamo usare i dati del percorso per cambiare la lingua? – Nordes