Digamos que eu esteja hospedando um site em http://www.foobar.com .
Existe uma maneira de verificar programaticamente " http://www.foobar.com/ " no meu código (ou seja, sem precisar codificá-lo na minha configuração da web)?
Digamos que eu esteja hospedando um site em http://www.foobar.com .
Existe uma maneira de verificar programaticamente " http://www.foobar.com/ " no meu código (ou seja, sem precisar codificá-lo na minha configuração da web)?
Respostas:
HttpContext.Current.Request.Url pode obter todas as informações sobre o URL. E pode quebrar o url em seus fragmentos.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
O método GetLeftPart retorna uma string contendo a parte mais à esquerda da string URI, terminando com a parte especificada por part.
O esquema e os segmentos de autoridade do URI.
Para quem ainda está se perguntando, uma resposta mais completa está disponível em http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/ .
public string FullyQualifiedApplicationPath
{
get
{
//Return variable declaration
var appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}{3}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port,
context.Request.ApplicationPath);
}
if (!appPath.EndsWith("/"))
appPath += "/";
return appPath;
}
}
context.Request.Url.Port == 80
por (context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
ou usar a resposta abaixo
Se o URL de exemplo for http://www.foobar.com/Page1
HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1"
HttpContext.Current.Request.Url.Host; //returns "www.foobar.com"
HttpContext.Current.Request.Url.Scheme; //returns "http/https"
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com"
.Host
de "http://www.foobar.com/Page1"
é www.foobar.com
, não foobar.com
.
Para obter toda a string do URL de solicitação:
HttpContext.Current.Request.Url
Para obter a parte www.foo.com da solicitação:
HttpContext.Current.Request.Url.Host
Observe que você está, até certo ponto, à mercê de fatores externos ao seu aplicativo ASP.NET. Se o IIS estiver configurado para aceitar vários ou qualquer cabeçalho de host para o seu aplicativo, qualquer um desses domínios resolvidos para o seu aplicativo via DNS pode aparecer como o URL da solicitação, dependendo de qual o usuário inseriu.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => retornar host.com
s.host.com => retornar host.com
host.co.uk => return host.co.uk
www.host.co.uk => return host.co.uk
s1.www.host.co.uk => return host.co.uk
Eu sei que isso é mais antigo, mas a maneira correta de fazer isso agora é
string Domain = HttpContext.Current.Request.Url.Authority
Isso obterá o DNS ou endereço IP com porta para um servidor.
Isso também funciona:
string url = HttpContext.Request.Url.Authority;
Exemplo C # abaixo:
string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();
string host = Request.Url.Host;
Regex domainReg = new Regex("([^.]+\\.[^.]+)$");
HttpCookie cookie = new HttpCookie(cookieName, "true");
if (domainReg.IsMatch(host))
{
cookieDomain = domainReg.Match(host).Groups[1].Value;
}
Request
objeto.