Asp.Net Routing – Afficher l’URL complète

J’ai un domaine “http://www.abc.com”. J’ai déployé une application ASP.net MVC4 sur ce domaine. J’ai également configuré un itinéraire par défaut dans RouteConfig.cs, comme indiqué ci-dessous.

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "MyApp", action = "Home", id = UrlParameter.Optional } ); 

Le mappage ci-dessus garantit que toute personne tentant de visiter “http://www.abc.com” aura automatiquement la page “http://www.abc.com/MyApp/Home”

Tout fonctionne comme prévu, mais la barre d’adresse du navigateur indique “http://www.abc.com” au lieu de “http://www.abc.com/MyApp/Home”. Existe-t-il un moyen de forcer le navigateur à afficher l’URL complète, y compris le contrôleur et l’action?

Une option serait de définir votre route par défaut sur un nouveau contrôleur, appelé peut-être BaseController avec une action Root :

 public class BaseController : Controller { public ActionResult Root() { return RedirectToAction("Home","MyApp"); } } 

et modifiez votre RouteConfig pour qu’il pointe sur celui des demandes racine:

 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Base", action = "Root", id = UrlParameter.Optional } ); 

Vous devrez faire une sorte de réécriture d’URL. Le moyen le plus rapide consiste probablement à append un appel RewritePath à votre BeginRequest dans Global.asax. Dans votre cas, ce serait quelque chose comme ça:

 void Application_BeginRequest(Object sender, EventArgs e) { ssortingng originalPath = HttpContext.Current.Request.Path.ToLower(); if (originalPath == "/") //Or whatever is equal to the blank path Context.RewritePath("/MyApp/Home"); } 

Une amélioration consisterait à extraire dynamicment l’URL de la table de routage pour le remplacement. Ou vous pouvez utiliser Microsoft URL Rewrite , mais c’est plus compliqué OMI.

Supprimez simplement les parameters par défaut, il a été répondu ici:

Comment forcer MVC à router vers Home / Index au lieu de root?