Estou me perguntando qual é a melhor maneira de obter o domínio atual no ASP.NET?
Por exemplo:
http://www.domainname.com/subdir/ deve render http://www.domainname.com http://www.sub.domainname.com/subdir/ deve render http://sub.domainname.com
Como um guia, devo ser capaz de adicionar um url como "/Folder/Content/filename.html" (digamos como gerado por Url.RouteUrl () na ASP.NET MVC) diretamente no URL e deve funcionar.
asp.net
asp.net-mvc
domain-name
Matt Mitchell
fonte
fonte
Respostas:
Mesma resposta que MattMitchell, mas com algumas modificações. Em vez disso, verifica a porta padrão.
fonte
Request.Url.Authority
como Korayem sugeriu em vez deRequest.Url.Host
eRequest.Url.Port
.De acordo com este link, um bom ponto de partida é:
No entanto, se o domínio for http://www.domainname.com:500, ocorrerá uma falha.
Algo como o seguinte é tentador para resolver isso:
No entanto, as portas 80 e 443 dependerão da configuração.
Como tal, você deve usar
IsDefaultPort
como na Resposta Aceita acima de Carlos Muñoz.fonte
Este é o esquema incluído.
fonte
AVISO! Para quem usa Current.Request .Url.Host. Entenda que você está trabalhando com base no PEDIDO ATUAL e que o pedido atual NÃO será SEMPRE com o seu servidor e às vezes pode ser com outros servidores.
Portanto, se você usar isso em algo como Application_BeginRequest () em Global.asax, em 99,9% do tempo estará tudo bem, mas 0,1% poderá obter algo diferente do nome de host do seu próprio servidor.
Um bom exemplo disso é algo que descobri há não muito tempo. Meu servidor tende a acessar http://proxyjudge1.proxyfire.net/fastenv de vez em quando. Application_BeginRequest () lida com essa solicitação com prazer, então se você chamar Request.Url.Host quando estiver fazendo essa solicitação, você receberá de volta proxyjudge1.proxyfire.net. Alguns de vocês podem estar pensando "não duh", mas vale a pena notar porque era um bug muito difícil de notar, já que acontecia apenas 0,1% das vezes: P
Este bug me forçou a inserir meu host de domínio como uma string nos arquivos de configuração.
fonte
Por que não usar
Request.Url.Authority
Ele retorna todo o domínio E a porta.
Você ainda precisa descobrir http ou https
fonte
Caminho simples e curto (suporta esquema, domínio e porta):
Usar
Request.GetFullDomain()
fonte
Outra maneira:
fonte
E se:
fonte
Usando UriBuilder:
fonte
E se:
fonte