通常要访问当前域名,例如托管站点的地方,我会执行类似
的操作string rURL = HttpContext.Current.Request.Url.ToString().ToLower();
但仅HttpContext
Application_Start
Application_BeginRequest
无法使用{{1}}。
有什么想法吗?
答案 0 :(得分:8)
单个IIS应用程序可以绑定到许多不同的URL。 Application_Start
在收到任何请求之前触发,因此找到该网站绑定的域名的唯一方法是查询IIS。
即便如此,您可能无法得到答案 - 考虑应用程序绑定到通配符/默认主机名的情况。
更好的方法可能是Application_AuthenticateRequest
。这会在Application_BeginRequest
之前触发,并且会为您提供完整的HttpContext.Current.Request
对象。
答案 1 :(得分:7)
您可以在Gloabl.asax.cs中使用它,无论是否在Application_Start()内。
var hostName = Dns.GetHostName();
在Asp.net 4.5 MVC中测试。
答案 2 :(得分:3)
IIS应用程序在应用程序启动时不知道它从哪个域访问(请参阅绑定)。
答案 3 :(得分:2)
实现这一目标的一种方法是做一点作弊并附带警告,那就是使用System.Web.Hosting.HostingEnvironment.SiteName
。
所以这看起来像:
string rURL = System.Web.Hosting.HostingEnvironment.SiteName;
现在对于那些警告:
出于我的目的 - 在IIS中有多个站点指向同一物理文件夹的服务器上设置日志记录 - 上述解决方案可能是最简单和最简单的。我不是说它必然是“正确的”答案,但它应该被视为一种替代方案。