Digamos que tengo un sitio web en http://www.foobar.com .
¿Hay alguna forma de determinar mediante programación " http://www.foobar.com/ " en mi código subyacente (es decir, sin tener que codificarlo en mi configuración web)?
Digamos que tengo un sitio web en http://www.foobar.com .
¿Hay alguna forma de determinar mediante programación " http://www.foobar.com/ " en mi código subyacente (es decir, sin tener que codificarlo en mi configuración web)?
Respuestas:
HttpContext.Current.Request.Url puede obtener toda la información sobre la URL. Y puede dividir la URL en fragmentos.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
El método GetLeftPart devuelve una cadena que contiene la parte más a la izquierda de la cadena URI, que termina con la parte especificada por part.
El esquema y los segmentos de autoridad del URI.
Para cualquiera que todavía se lo pregunte, hay una respuesta más completa disponible en 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")
o por debajo utilización respuesta
Si la URL de ejemplo es 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"
es www.foobar.com
, no foobar.com
.
Para obtener la cadena de URL de solicitud completa:
HttpContext.Current.Request.Url
Para obtener la parte www.foo.com de la solicitud:
HttpContext.Current.Request.Url.Host
Tenga en cuenta que, hasta cierto punto, está a merced de factores ajenos a su aplicación ASP.NET. Si IIS está configurado para aceptar varios o cualquier encabezado de host para su aplicación, entonces cualquiera de esos dominios que se resolvieron en su aplicación a través de DNS puede aparecer como la URL de solicitud, dependiendo de cuál ingresó el usuario.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => regresar host.com
s.host.com => regresar 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
Esto también funciona:
string url = HttpContext.Request.Url.Authority;
Ejemplo de C # a continuación:
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.