Quero escrever um método auxiliar que retorne a URL base do site. Isto é o que eu vim com:
public static string GetSiteUrl()
{
string url = string.Empty;
HttpRequest request = HttpContext.Current.Request;
if (request.IsSecureConnection)
url = "https://";
else
url = "http://";
url += request["HTTP_HOST"] + "/";
return url;
}
Existe algum erro nisso, em que você pode pensar? Alguém pode melhorar isso?
c#
asp.net
uri
httprequest
Jaggu
fonte
fonte
Respostas:
Tente o seguinte:
fonte
É isso aí ;)
fonte
Infelizmente, a
GetLeftPart
solução popular não é suportada na versão PCL doUri
.GetComponents
é, no entanto, se você precisar de portabilidade, faça o seguinte:fonte
Acredito que as respostas acima não consideram quando o site não está na raiz do site.
Este é um para o controlador WebApi:
fonte
Para mim, o @ warlock's parece a melhor resposta aqui até agora, mas eu sempre usei isso no passado;
Ou em um controlador WebAPI;
o que é útil para que você possa escolher qual formato de escape você deseja. Não sei ao certo por que existem duas implementações tão diferentes, e até onde eu sei, esse método e o @ warlock retornam exatamente o mesmo resultado neste caso, mas parece
GetLeftPart()
que também funcionaria paramailto
tags semelhantes a Uri que não sejam do servidor, por exemplo .fonte
Este é um método muito mais à prova de idiotas.
fonte
/
se hospedar em algum domínio de aplicação por exemplo yourserver / YourApplicationName / yourrootpatheu vou com
fonte
Com base no que Warlock escreveu, descobri que a raiz do caminho virtual é necessária se você não estiver hospedado na raiz da sua web. (Isso funciona para controladores MVC Web API)
fonte
Estou usando o seguinte código de Application_Start
String baseUrl = Path.GetDirectoryName(HttpContext.Current.Request.Url.OriginalString);
fonte
Isso funciona para mim.
Portanto, se você deseja acessar seu nome de domínio, inclua o nome do aplicativo no caso de:
====================================
Para o dev.x.us/web
retorna este texto forte
fonte
Por favor, use o código abaixo
fonte
fonte
você poderia adicionar na porta a porta não 80 / SSL?
algo como:
e usar isso no resultado final?
fonte
Request.Url.Authority
incluirá o número da porta se não for padrão