我正在使用 MVC4 并在我的 global.asax 中创建了一个自定义路由来获取主机详细信息。
我已经设置了一个产品,让我的用户能够通过“theirbusiness.mydomain.com”登录
我现在想检查用户何时浏览到“randomstore.mydomain.com”,如果存储不存在,则实际存储已经在我的数据库中创建,将用户重定向到页面。
到目前为止我有
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new SubDomainRoute());
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Process", action = "Index", id = UrlParameter.Optional },
constraints: null,
namespaces: new[] { "WebApplication.Controllers" }
);
}
protected void Application_Start()
{
log4net.Config.XmlConfigurator.Configure();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
public class SubDomainRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log.Info(string.Format("GetRouteData"));
log.Info(DateTime.Now);
var url = httpContext.Request.Headers["HOST"];
var index = url.IndexOf(".");
if (index < 0)
return null;
log.Info(url);
var subDomain = url.Substring(0, index);
//check
log.Info(subDomain);
return null;
}
对我来说,获取变量 subDomain 并在数据库中检查它的最佳方法是什么。在 SubDomainRoute 类中尝试这样做感觉不对