使用C#创建子域

时间:2018-06-13 11:15:51

标签: c# asp.net asp.net-mvc routing subdomain

我有一个关于使用C#创建子域的问题。因此,这背后的想法是用户可以在我们的Web应用程序上创建子域,如下所示:

username.example.com 

  username2.example.com

我熟悉静态/动态路线。我猜这可以用其中一个或虚拟目录来完成?

如何在C#和.NET中执行此操作?

1 个答案:

答案 0 :(得分:2)

首先,假设您有一个专用IP到您的站点,以避免在IIS上绑定

第二步,假设您使用BIND进行dns,因此您打开正确的txt文件并添加或删除带有时间戳更新的正确子域,并通过命令调用重新启动BIND服务asp.net ...(你需要知道一些基本的DNS,并允许访问池,以便能够在那里读/写)

然后你可以在第一次调用global.asax Application_BeginRequest

时阅读
HttpContext.Current.Request.Path

它也包含子域名,并使用

进行翻译
HttpContext.Current.RewritePath

类似

username.example.com  -> example.com/users.aspx?userid=123456

这是一般的想法(这是在 global.asax )......

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    string sThePathToReWrite = sFindTheRealPath();

    if (sThePathToReWrite != null){
        HttpContext.Current.RewritePath(sThePathToReWrite, false);
    }       
}

string sFindTheRealPath()
{
    string strCurrentPath = HttpContext.Current.Request.Path;   

    // analyze the strCurrentPath 
    // find for example the userid from the url
    // and return the translate one - if not find anything return null
    return "example.com/users.aspx?userid=" + userid        
}