2010-03-25 52 views
4

我正在开发一个Web应用程序,该应用程序将根据使用哪个域名来动态更改其内容。多个域将指向相同的应用程序。我希望用下面的代码(或一些接近)来检测域名并进行自定义设置:使用ASP.NET开发服务器测试多个域

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检测功能?

谢谢。

+0

你可能会用到这个 - http://cassinidev.codeplex.com/ – 2010-04-01 04:24:06

回答

7

我自己想出了这一个。这里的问题不是HOSTS文件无法正常工作,而是因为我使用错误的方法从浏览器中检测到主机头。

这不起作用,只能重复ASP开发服务器所在的127.0.0.1本地主机。

Request.Url.Host; 

但是,通过使用替代以下,域名输入到浏览器中存储,可以用来动态地改变网站的行为,即使是ASP开发服务器上。

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

因此解决的办法,以测试多个域上的开发服务器:

  1. 创建几个测试领域的HOSTS本地计算机指向127.0.0.1
  2. 使用头文件中。获取(“主机”)语法来嗅探进入浏览器的域名

我发现的唯一'疑难杂症'是您仍必须手动保留ASP开发工具的特定端口ver正在运行。

例如: 如果你在你的hosts文件www.mytestdomain.com指向127.0.0.1,你的开发服务器在端口46146上运行,则必须输入以下到您的浏览器进行测试:http://www.mytestdomain.com:46146/

但它仍然有效!

+0

这仍然适用于Visual Studio 2012RC开发服务器。 – 2012-06-20 19:55:47