Мне интересно, как лучше всего получить текущий домен в ASP.NET?
Например:
http://www.domainname.com/subdir/ должно давать http://www.domainname.com http://www.sub.domainname.com/subdir/ должно давать http://sub.domainname.com
В качестве руководства я должен иметь возможность добавить URL-адрес типа «/Folder/Content/filename.html» (например, созданный с помощью Url.RouteUrl () в ASP.NET MVC) прямо в URL-адрес, и он должен работать.
asp.net
asp.net-mvc
domain-name
Мэтт Митчелл
источник
источник
Ответы:
Тот же ответ, что и у Мэтта Митчелла, но с некоторыми изменениями. Вместо этого проверяется порт по умолчанию.
источник
Request.Url.Authority
как предлагает Кораем, вместоRequest.Url.Host
иRequest.Url.Port
.По этой ссылке хорошей отправной точкой является:
Однако, если домен http://www.domainname.com:500, это не удастся.
Что-то вроде следующего заманчиво решить эту проблему:
Однако порт 80 и 443 будет зависеть от конфигурации.
Таким образом, вам следует использовать
IsDefaultPort
как в принятом ответе Карлоса Муньоса выше.источник
Это включенная схема.
источник
ПРЕДУПРЕЖДЕНИЕ! Всем, кто использует Current.Request .Url.Host. Поймите, что вы работаете на ТЕКУЩЕМ ЗАПРОСЕ и что текущий запрос НЕ ВСЕГДА будет на вашем сервере, а иногда может быть на других серверах.
Поэтому, если вы используете это в чем-то вроде Application_BeginRequest () в Global.asax, то в 99,9% случаев все будет хорошо, но в 0,1% вы можете получить что-то другое, кроме имени хоста вашего собственного сервера.
Хорошим примером этого является то, что я обнаружил не так давно. Мой сервер имеет тенденцию время от времени посещать http://proxyjudge1.proxyfire.net/fastenv . Application_BeginRequest () с радостью обработает этот запрос, поэтому, если вы вызовете Request.Url.Host, когда он делает этот запрос, вы получите обратно proxyjudge1.proxyfire.net. Некоторые из вас могут подумать «нет, черт возьми», но это стоит отметить, потому что это было очень трудно заметить, так как это происходило только в 0,1% случаев: P
Эта ошибка вынудила меня вставить мой хост домена в виде строки в файлы конфигурации.
источник
Почему бы не использовать
Request.Url.Authority
Он возвращает весь домен И порт.
Вам все равно нужно указать http или https
источник
Простой и короткий способ (поддерживает схему, домен и порт):
Использовать
Request.GetFullDomain()
источник
По-другому:
источник
Как насчет:
источник
Использование UriBuilder:
источник
Как насчет:
источник