Во-первых, допустим, что у вас есть выделенный IP-адрес для вашего сайта, чтобы избежать привязки к IIS
Второй шаг: допустим, вы используете BIND для DNS, поэтому вы открываете правильный текстовый файл и добавляетеили удалите правильный поддомен с обновлением метки времени и перезапустите службу BIND с помощью командного вызова из asp.net… (вам нужно знать некоторые базовые сведения для DNS и предоставить доступ к пулу, чтобы иметь возможность читать/ write туда)
Затем вы можете прочитать при первом вызове 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
}