Disons que j'héberge un site Web à http://www.foobar.com .
Existe-t-il un moyen de vérifier par programme " http://www.foobar.com/ " dans mon code derrière (c'est-à-dire sans avoir à le coder en dur dans ma configuration Web)?
Disons que j'héberge un site Web à http://www.foobar.com .
Existe-t-il un moyen de vérifier par programme " http://www.foobar.com/ " dans mon code derrière (c'est-à-dire sans avoir à le coder en dur dans ma configuration Web)?
Réponses:
HttpContext.Current.Request.Url peut vous obtenir toutes les informations sur l'URL. Et peut décomposer l'URL en ses fragments.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
La méthode GetLeftPart renvoie une chaîne contenant la partie la plus à gauche de la chaîne URI, se terminant par la partie spécifiée par part.
Les segments de schéma et d'autorité de l'URI.
Pour ceux qui se demandent encore, une réponse plus complète est disponible sur 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
par (context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
ou utiliser réponse ci - dessous
Si l'exemple d'URL est 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"
est www.foobar.com
, non foobar.com
.
Pour obtenir la chaîne complète de l'URL de la requête:
HttpContext.Current.Request.Url
Pour obtenir la partie www.foo.com de la demande:
HttpContext.Current.Request.Url.Host
Notez que vous êtes, dans une certaine mesure, à la merci de facteurs extérieurs à votre application ASP.NET. Si IIS est configuré pour accepter plusieurs ou n'importe quel en-tête d'hôte pour votre application, alors l'un de ces domaines qui ont résolu votre application via DNS peut apparaître comme l'URL de la demande, en fonction de celui que l'utilisateur a entré.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => renvoyer host.com
s.host.com => renvoyer host.com
host.co.uk => retour host.co.uk
www.host.co.uk => retour host.co.uk
s1.www.host.co.uk => retour host.co.uk
Je sais que c'est plus ancien, mais la bonne façon de le faire maintenant est
string Domain = HttpContext.Current.Request.Url.Authority
Cela obtiendra l'adresse DNS ou IP avec le port d'un serveur.
Cela fonctionne aussi:
string url = HttpContext.Request.Url.Authority;
Exemple C # ci-dessous:
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
objet.