使用ASP.NET开发服务器测试多个域

时间:2010-03-25 05:15:19

标签: asp.net visual-studio-2008

我正在开发一个单独的Web应用程序,它将根据用于访问该站点的域名动态更改其内容。多个域将指向同一个应用程序。我希望使用以下代码(或关闭的东西)来检测域名并执行自定义:

string theDomainName = Request.Url.Host;

switch (theDomainName)
{
  case "www.clientone.com":
    // do stuff
    break;
  case "www.clienttwo.com":
    // do other stuff
    break;
}

我想使用ASP.NET开发服务器测试上面的功能。我在本地HOSTS文件中创建了映射,以将www.clientone.com映射到127.0.0.1,将www.clienttwo.com映射到127.0.0.1。然后我使用www.clinetone.com(等)浏览器浏览应用程序。

当我尝试使用ASP.net开发服务器测试此代码时,URL始终显示localhost。它不捕获在浏览器中输入的主机,只捕获localhost。

有没有办法使用开发服务器测试URL检测功能?

感谢。

1 个答案:

答案 0 :(得分:7)

我自己想出这个。这里的问题不是HOSTS文件不起作用,而是我使用错误的方法从浏览器中检测主机头。

这不起作用,只重复ASP开发服务器所在的127.0.0.1 localhost。

 Request.Url.Host;

但是,通过使用以下内容,可以存储输入浏览器的域,并可用于动态更改站点行为,即使在ASP开发服务器上也是如此。

 HttpContext.Current.Request.Headers.Get("Host").ToString();  

因此,在Dev服务器上测试多个域的解决方案是:

  1. 在本地计算机上的HOSTS文件中创建多个测试域,指向127.0.0.1
  2. 使用Headers.Get(“Host”)语法嗅探输入浏览器的域
  3. 我发现唯一的'问题'是你仍然必须手动保留运行ASP dev服务器的特定端口。

    实施例: 如果您的主机文件www.mytestdomain.com指向127.0.0.1,并且您的开发服务器在端口46146上运行,则必须在浏览器中输入以下内容以进行测试:http://www.mytestdomain.com:46146/

    但它仍然有效!