ASP.NET MVC动态二级域名及DNS泛解析配置2013-10-20动态二级域名的实现:应用场景:目前产品要实现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 模式——来自MSDNMVC 应用程序中用于路由的 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 parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults);}protected void Application_Start(){AreaRegistration.RegisterAllAreas();RegisterGlobalFilters(GlobalFilters.Filters);RegisterRoutes(RouteTable.Routes);}涉及类参考
| 类 | 说明 |
| Route | 表示 Web 窗体或 MVC 应用程序中的路由。 |
| RouteBase | 用作表示 ASP.NET 路由的所有类的基类。 |
| RouteTable | 存储应用程序的路由。 |
| RouteData | 包含所请求路由的值。 |
| RequestContext | 包含有关对应于路由的 HTTP 请求的信息。 |
| RouteValueDictionary | 提供用于存储路由 Constraints、Defaults 和 DataTokens 对象的方法。 |
| VirtualPathData | 提供用于从路由信息生成 URL 的方法。 |