Я хочу получить текущее доменное имя в asp.net c #.
Я использую этот код.
string DomainName = HttpContext.Current.Request.Url.Host;
Мой URL есть, localhost:5858
но он только возвращается localhost
.
Теперь я использую свой проект на localhost. Я хочу получить localhost: 5858.
Другой пример, когда я использую этот домен
www.somedomainname.com
я хочу получить somedomainname.com
Пожалуйста, дайте мне идею, как получить текущее доменное имя.
Ответы:
Использование
Request.Url.Host
уместно - это способ получения значения HTTP-Host:
заголовка, который указывает, какое имя хоста (доменное имя) хочет UA (браузер), поскольку часть пути к ресурсам HTTP-запроса не включает имя хоста.Обратите внимание, что
localhost:5858
это не имя домена, это спецификатор конечной точки, также известный как «авторитет», который включает имя хоста и номер порта TCP. Это извлекается путем доступаRequest.Uri.Authority
.Кроме того, она не действует , чтобы получить
somedomain.com
отwww.somedomain.com
потому что веб - сервер может быть настроены для другого сайта поwww.somedomain.com
сравнению сsomedomain.com
, однако , если вы уверены , что это справедливо в вашем случае , то вам необходимо вручную разобрать имя хоста, несмотря на использованиеString.Split('.')
произведения в щепотка.Обратите внимание, что конфигурация веб-сервера (IIS) отличается от конфигурации ASP.NET, и что ASP.NET фактически полностью игнорирует конфигурацию привязки HTTP веб-сайтов и веб-приложений, под которыми он работает. Тот факт, что и IIS, и ASP.NET используют одни и те же файлы конфигурации (
web.config
), является красной селедкой.источник
Попробуйте получить «левую часть» URL-адреса, например:
string domainName = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
Это даст вам либо
http://localhost:5858
илиhttps://www.somedomainname.com
вы на местном или производстве ли. Если вы хотите отброситьwww
часть, вам следует настроить IIS для этого, но это уже другая тема.Обратите внимание, что полученный URL-адрес не будет иметь косой черты в конце.
источник
http://localhost:60333
Вот скриншот
Request.RequestUri
и все его свойства для всеобщего ознакомления.источник
Вы можете попробовать следующий код:
Request.Url.Host + (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port)
источник
www.somedomain.com
это домен / хост. Поддомен - важная часть.www.
часто используется взаимозаменяемо с отсутствием такового, но это должно быть настроено как правило (даже если оно установлено по умолчанию), потому что они не эквивалентны. Подумайте о другом субдомене, напримерmx.
. У него, вероятно, другая цель, чем уwww.
.Учитывая это, я бы посоветовал не делать таких вещей. Тем не менее, раз уж вы спрашиваете, я полагаю, у вас есть веская причина.
Лично я бы посоветовал
www.
для этого специальный корпус .string host = HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);; if (host.StartsWith("www.")) return host.Substring(4); else return host;
В противном случае, если вы действительно на 100% уверены, что хотите отрубить любой поддомен, вам понадобится что-то посложнее.
string host = ...; int lastDot = host.LastIndexOf('.'); int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.'); if (secondToLastDot > -1) return host.Substring(secondToLastDot + 1); else return host;
Получение порта происходит так же, как и другие люди.
источник
HttpContext.Current.Request.Url.Host возвращает правильные значения. Если вы запустите его на www.somedomainname.com, он даст вам www.somedomainname.com. Если вы хотите получить и 5858, вам нужно использовать
источник
у
Request.ServerVariables
меня объект работает. Я не знаю ни одной причины не использовать его.ServerVariables["SERVER_NAME"]
иServerVariables["HTTP_URL"]
должен получить то, что ищешьисточник
Вы можете попробовать следующий код, чтобы получить полное доменное имя:
источник
Вот быстрый и простой способ просто получить имя URL-адреса.
var urlHost = HttpContext.Current.Request.Url.Host; var xUrlHost = urlHost.Split('.'); foreach(var thing in xUrlHost) { if(thing != "www" && thing != "com") { urlHost = thing; } }
источник
Попробуй это:
@ Request.Url.GetLeftPart (UriPartial.Authority)
источник
Чтобы получить базовый URL в MVC даже с поддоменом
www.somedomain.com/subdomain
:var url = $"{Request.Url.GetLeftPart(UriPartial.Authority)}{Url.Content("~/")}";
источник
Я использую это так в asp.net core 3.1
var url =Request.Scheme+"://"+ Request.Host.Value;
источник