我想在Application_Start方法中执行此操作,因此如果站点在测试服务器上运行,我可以编写“robots.txt”文件。
由于
答案 0 :(得分:1)
我最初认为是旧学校,使用ServerVariables collection,因为以下在我的测试应用程序中运行良好,但在内置的VS Web服务器下运行:
void Application_Start(object sender, EventArgs e) {
// Code that runs on application startup
string localAddress = Context.Request.ServerVariables["LOCAL_ADDR"];
// Returns "::1" when running under the VS server, however it throws an
// exception under IIS Express, so I assume it also does so under IIS.
}
我能提出的下一个最佳选择是:
void Application_Start(object sender, EventArgs e) {
// Code that runs on application startup
string serverName = Server.MachineName;
}
哪个适用于VS和IIS express,所以如果你知道测试或实时服务器的名称,你可以检查一下吗?
答案 1 :(得分:1)
试试这个。
var ips = Dns.GetHostAddresses(Dns.GetHostName());
if (ips.Any())
{
var serverIp = ips[ips.Count()-1];
}
由于本地或远程服务器,Dns.GetHostAddresses将返回不同的长度,
这就是为什么我使用ips.Count() - 1获得最少的一个。
答案 2 :(得分:0)
试试这个:
HttpRequest httpRequest = HttpContext.Current.Request;
string host = httpRequest.Headers["host"];
IPAddress hostAddresse = Dns.GetHostAddresses("host").Where(a=>a.AddressFamily ==AddressFamily.InterNetwork).FirstOrDefault();