Просто добавить несколько деталей.
Как упомянуто @Ant P ниже код используется для маршрутизации регистр
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
На самом деле MapRoute
является Extension method
по сбору маршрутов, и она внутренне реализована, как показано ниже.
Примечание: его просто псевдо-код в соответствии с моим пониманием.
var url = "{controller}/{action}/{id}";
var defaults = new RouteValueDictionary();
defaults.Add("controller", "Home");
defaults.Add("action", "Index");
defaults.Add("id", UrlParameter.Optional);
var routeHandler = new MvcRouteHandler();
var Default = new Route(url,defaults,routeHandler);
routes.Add(Default);
метод MvcRouteHandler в GetHttpHandler()
возвращает экземпляр класса MvcHttpHandler
, который внутренне обработать дополнительный запрос.
Надеется, что это поможет понять роль UrlRoutingModule
Есть ли разница между UrlRoutingModule и Http Module? –
@Amit: Как вы сказали в первом предложении ** Запросы на веб-приложение на основе ASP.NET MVC сначала проходят через объект UrlRoutingModule, который является модулем HTTP. ** Есть ли разница между UrlRoutingModule и Http Module? –
HTTP-модуль - это общая концепция некоторого кода, выполняемая IIS при обработке запросов. Это очень простое описание, но больше не вписывается в комментарий, есть много чтения по этой теме. В .Net - это класс, реализующий интерфейс IHttpModule. System.Web.Routing.UrlRoutingModule - это конкретный класс, реализующий IHttpModule, и это делает его конкретным HTTP-модулем, что-то конкретное. В ASP.Net есть много HTTP-модулей, и каждый может создавать свои собственные. – user3285954