Disons que j'héberge un site Web à l'adresse http://www.foobar.com .
Existe-t-il un moyen de vérifier par programmation " http://www.foobar.com/ " dans mon code (sans avoir à le coder en dur dans ma configuration Web)?
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 partie.
Les segments schéma et autorité de l'URI.
Pour ceux qui le 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;
}
}
Si exemple, l'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"
string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com"
Pour obtenir la chaîne d'URL de requête complè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 en-têtes d'hôte pour votre application, l'un des domaines résolus en DNS via votre application peut s'afficher en tant qu'URL de la demande, en fonction de l'utilisateur entré.
--Ajouter le port peut aider lors de l'exécution IIS Express
Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port
Match match = Regex.Match(Host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
Host.com => retour Host.com
s.Host.com => return Host.com
Host.co.uk => retour Host.co.uk
www.Host.co.uk => return Host.co.uk
s1.www.Host.co.uk => return Host.co.uk
Je sais que c'est plus vieux, mais la bonne façon de le faire est maintenant
string Domain = HttpContext.Current.Request.Url.Authority
Cela obtiendra l'adresse DNS ou IP avec le port pour un serveur.
Cela fonctionne aussi:
string url = HttpContext.Request.Url.Authority;
string domainName = Request.Url.Host
Cela retournera spécifiquement ce que vous demandez.
Dim mySiteUrl = Request.Url.Host.ToString()
Je sais que c'est une question plus ancienne. Mais j'avais besoin de la même réponse simple et cela retourne exactement ce qui est demandé (sans le http: //).
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;
}