Как узнать DNS-имя сервера, на котором запущено приложение ASP.NET?
Я хочу получить строку «www.somehost.com», если URL моего приложения http://www.somehost.com/somepath/application.aspx
Есть ли для этого какое-то свойство объектов Server, Contex, Session или Request?
Спасибо!
Вы пытаетесь найти часть URL-адреса домена / хоста, используемого веб-пользователем? Или машинное имя сервера, на котором запущено приложение ASP.NET? Они не обязательно одинаковые. Учитывая, что вы рассматриваете объект Request, я подозреваю, что вам нужна хостовая часть URL-адреса?





Переменная сервера HTTP_HOST может дать вам то, что вам нужно.
Request.ServerVariables("HTTP_HOST")
Это [хост из заголовков http. Если перед сервером приложений ASP.NET есть обратный прокси или что-то еще, вероятно, это не имя компьютера, на котором запущено приложение ASP.NET.
Это даст вам IP-адрес DNS для сервера, на котором размещен веб-сайт.
void GetDNSServerAddress()
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in nics)
{
if (ni.OperationalStatus == OperationalStatus.Up)
{
IPAddressCollection ips = ni.GetIPProperties().DnsAddresses;
foreach (System.Net.IPAddress ip in ips)
{
Console.Write(ip.ToString());
}
}
}
}
Однако, когда я писал это, я только что видел ваш отредактированный пост, поэтому я думаю, что это то, что вам нужно, просто:
string host = Request.Url.Scheme + "://" + Request.Url.Host;
Надеюсь это поможет!
Вы также можете получить "имя машины", используя
System.Environment.MachineName
Доменное имя или сервер доменного имени?