Existe uma maneira simples no .NET de obter rapidamente o protocolo, host e porta atuais? Por exemplo, se eu estiver no seguinte URL:
http://www.mywebsite.com:80/pages/page1.aspx
Eu preciso retornar:
http://www.mywebsite.com:80
Sei que posso usar Request.Url.AbsoluteUri
para obter a URL completa e sei que posso usar Request.Url.Authority
para obter o host e a porta, mas não tenho certeza da melhor maneira de obter o protocolo sem analisar a string da URL.
Alguma sugestão?
Respostas:
O código a seguir (C #) deve fazer o truque
fonte
Uri.GetLeftPart
como @dthrasher apontaMesmo que o @Rick tenha a resposta aceita para essa pergunta, na verdade há uma maneira mais curta de fazer isso, usando o
Uri.GetLeftPart()
método com nomes inadequados .Há um problema
GetLeftPart()
, no entanto. Se a porta for a porta padrão do esquema, ela será removida. Como a porta 80 é a porta padrão para http, a saída doGetLeftPart()
meu exemplo acima seráhttp://www.mywebsite.com
.Se o número da porta tivesse sido diferente de 80, seria incluído no resultado.
fonte
Uri
classe dessa maneira. Há vários casos em que esse construtor lança uma exceção. Na maioria dos casos, prefiro que meu código seja um pouco mais perdoador antes de interromper a tarefa em questão.Bem, se você estiver fazendo isso no Asp.Net ou tiver acesso ao HttpContext.Current.Request, eu diria que essas são maneiras mais fáceis e gerais de obtê-los:
Eu espero que isso ajude. :)
fonte
Uma maneira mais estruturada de obter isso é usar o UriBuilder. Isso evita a manipulação direta de strings.
fonte
Request.Url retornará o Uri da solicitação. Depois de ter isso, você pode recuperar praticamente tudo o que quiser. Para obter o protocolo, chame a propriedade Scheme .
Amostra:
Espero que isto ajude.
fonte
De maneira ainda mais curta, pode exigir o ASP.Net mais recente:
A enumeração UriComponents permite especificar quais componentes do URI você deseja incluir.
fonte
Muito parecido com a resposta de Holger. Se você precisar pegar o URL, pode fazer algo como:
A classe Uri fornece toda uma gama de métodos, muitos dos quais não listei.
No meu exemplo, eu precisava pegar
LocalHost
junto com oPort Number
, então é isso que eu fiz:Que pegou com sucesso:
http://localhost:12345
fonte