我正在开发一个单独的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检测功能?
感谢。
答案 0 :(得分:7)
我自己想出这个。这里的问题不是HOSTS文件不起作用,而是我使用错误的方法从浏览器中检测主机头。
这不起作用,只重复ASP开发服务器所在的127.0.0.1 localhost。
Request.Url.Host;
但是,通过使用以下内容,可以存储输入浏览器的域,并可用于动态更改站点行为,即使在ASP开发服务器上也是如此。
HttpContext.Current.Request.Headers.Get("Host").ToString();
因此,在Dev服务器上测试多个域的解决方案是:
我发现唯一的'问题'是你仍然必须手动保留运行ASP dev服务器的特定端口。
实施例: 如果您的主机文件www.mytestdomain.com指向127.0.0.1,并且您的开发服务器在端口46146上运行,则必须在浏览器中输入以下内容以进行测试:http://www.mytestdomain.com:46146/
但它仍然有效!