在Application_Start上访问当前域名

The*_*ear 8 .net c# global-asax

通常要访问当前域名,例如托管站点的地方,我会做类似的事情

string rURL = HttpContext.Current.Request.Url.ToString().ToLower();
Run Code Online (Sandbox Code Playgroud)

但是HttpContext不能Application_Start仅仅从中获得Application_BeginRequest.

有任何想法吗?

Jer*_*Gee 8

单个IIS应用程序可以绑定到许多不同的URL.Application_Start在收到任何请求之前触发,因此找到该站点绑定的域名的唯一方法是查询IIS.

即使这样,您也可能无法得到答案 - 考虑应用程序绑定到通配符/默认主机名的情况.

一个更好的方法可能是看Application_AuthenticateRequest.这之前发射Application_BeginRequest并确实给你一个完整的HttpContext.Current.Request物体.

  • `Application_Start`仅在应用程序 - eh - 启动时触发.:)而`Application_AuthenticateRequest`会在每个请求上触发.这不能准确回答问题. (2认同)

小智 7

试试Dns.GetHostName().

您可以在Gloabl.asax.cs中使用它,无论是否在Application_Start()内.

var hostName = Dns.GetHostName();
Run Code Online (Sandbox Code Playgroud)

在Asp.net 4.5 MVC中测试.

  • 请注意,这可能并不总是按预期工作.例如,在我的本地计算机上,我有一个域的主机条目(例如example.com),并且还在IIS中配置了绑定.但是,使用此方法时,我得到的是计算机名,而不是域名.在这种情况下,我得到类似"vm-dev1"的东西. (2认同)