.net - pegar - socket assincrono c#




.NET-Obter protocolo, host e porta (5)

Existe uma maneira simples no .NET para obter rapidamente o protocolo atual, host e porta? Por exemplo, se eu estiver no seguinte URL:

http://www.mywebsite.com:80/pages/page1.aspx

Eu preciso retornar:

http://www.mywebsite.com:80

Eu sei que eu posso usar Request.Url.AbsoluteUri para obter o URL completo, e eu sei que posso usar Request.Url.Authority para obter o host e porta, mas não tenho certeza da melhor maneira de obter o protocolo sem analisar a string da URL.

Alguma sugestã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ê-las:

var scheme = Request.Url.Scheme; // will get http, https, etc.
var host = Request.Url.Host; // will get www.mywebsite.com
var port = Request.Url.Port; // will get the port
var path = Request.Url.AbsolutePath; // should get the /pages/page1.aspx part, can't remember if it only get pages/page1.aspx

Eu espero que isso ajude. :)


Mesmo caminho mais curto, pode exigir mais recente ASP.Net:

string authority = Request.Url.GetComponents(UriComponents.SchemeAndServer,UriFormat.Unescaped)

O enum UriComponents permite especificar quais componentes do URI você deseja incluir.


Muito parecido com a resposta de Holger. Se você precisar pegar o URL pode fazer algo como:

Uri uri = Context.Request.Url;         
var scheme = uri.Scheme // returns http, https
var scheme2 = uri.Scheme + Uri.SchemeDelimiter; // returns http://, https://
var host = uri.Host; // return www.mywebsite.com
var port = uri.Port; // returns port number

A classe Uri fornece toda uma gama de métodos, muitos dos quais eu não listei.

No meu caso, eu precisava pegar LocalHost junto com o Port Number da Port Number , então foi isso que eu fiz:

var Uri uri = Context.Request.Url;
var host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port; 

Que agarrou com sucesso: http://localhost:12345


O seguinte código (C #) deve fazer o truque

Uri uri = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string requested = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;

Uma maneira mais estruturada de obter isso é usar o UriBuilder. Isso evita a manipulação direta de string.

var builder = new UriBuilder(Request.Url.Scheme, Request.Url.Host, Request.Url.Port);




authority