動態次層網域的實現:
應用情境:目前產品要實現SaaS功能,因為工作需要實現次層網域:www.{CompanyUrl}.xxx.com
假設產品主網域名稱入口為:www.xxx.com
當a公司租戶登入時:www.a.xxx.com
當b公司租戶登入時: www.b.xxx.com
首先想到的是對Url的重寫:(網上有關於UrlRewrite的實現。在ASP.NET中這也是常用的手法。)
Route簡介:ASP.NET路由可以不用映射到網站特定檔案的URL.由於該 URL 不必映射到檔案,因此可以使用對使用者操作進行描述因而更易於被使用者理解的 URL。.NET Framework 3.5 SP1已經包含了ASP.NET Routing引擎。現在微軟已經在ASP.NET WebForms 4.0中增加了對Routing引擎更好的支援,它使用運算式構造器進行雙向Routing。
MVC 應用程式中的典型 URL 模式——來自MSDN
MVC 應用程式中用於路由的 URL 模式通常包括 {controller} 和 {action} 預留位置。
當收到請求時,會將其路由到 UrlRoutingModule 對象,然後路由到 MvcHandler HTTP 處理常式。 MvcHandler HTTP 處理常式通過向 URL 中的控制器值添加尾碼“Controller”以確定將處理請求的控制器的類型名稱,來確定要調用的控制器。URL 中的操作值確定要調用的操作方法。
MVC項目中添加路由,Global.asax 檔案預設的MVC 路由的代碼。
預設配置:
public static void RegisterRoutes(RouteCollection routes){ routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }protected void Application_Start(){ AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes);}
涉及類參考
| 類 |
說明 |
| Route |
表示 Web Form或 MVC 應用程式中的路由。 |
| RouteBase |
用作表示 ASP.NET 路由的所有類的基類。 |
| RouteTable |
儲存應用程式的路由。 |
| RouteData |
包含所請求路由的值。 |
| RequestContext |
包含有關對應於路由的 HTTP 要求的資訊。 |
| RouteValueDictionary |
提供用於儲存路由 Constraints、Defaults 和 DataTokens 對象的方法。 |
| VirtualPathData |
提供用於從路由資訊產生 URL 的方法。 |