Скажем, у меня есть сайт http://www.foobar.com.
Есть ли способ, с помощью которого я могу программно установить " http://www.foobar.com/" в моем коде (т.е. без необходимости жестко кодировать его в моей веб-конфигурации )?
Скажем, у меня есть сайт http://www.foobar.com.
Есть ли способ, с помощью которого я могу программно установить " http://www.foobar.com/" в моем коде (т.е. без необходимости жестко кодировать его в моей веб-конфигурации )?
HttpContext.Current.Request.Url может предоставить вам всю информацию о URL-адресе. И может сломать URL-адрес на его фрагменты.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
Метод GetLeftPart возвращает строку, содержащую самую левую часть строки URI, заканчивающуюся частью, указанной частью.
Схема и сегменты полномочий URI.
Для всех, кто все еще интересуется, более полный ответ доступен на 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;
}
}
string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com"
Если пример Url http://www.foobar.com/Page1
HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1"
HttpContext.Current.Request.Url.Host; //returns "foobar.com"
HttpContext.Current.Request.Url.Scheme; //returns "http/https"
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com"
Чтобы получить всю строку URL-адреса запроса:
HttpContext.Current.Request.Url
Чтобы получить часть запроса www.foo.com:
HttpContext.Current.Request.Url.Host
Обратите внимание, что в какой-то степени вы находитесь во власти факторов вне вашего приложения ASP.NET. Если IIS настроен на прием нескольких или любых заголовков хоста для вашего приложения, то любой из тех доменов, которые разрешены для вашего приложения через DNS, может отображаться как URL-адрес запроса, в зависимости от того, какой пользователь вводил.
string domainName = Request.Url.Host
Я знаю, что это старше, но правильный способ сделать это сейчас
string Domain = HttpContext.Current.Request.Url.Authority
Это приведет к DNS или IP-адресу с портом для сервера.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com = > return host.com
s.host.com = > return 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
- Добавление порта может помочь при запуске IIS Express
Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port
Это также работает:
string url = HttpContext.Request.Url.Authority;
Пример С# ниже:
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;
}
Это будет именно то, что вы просите.
Dim mySiteUrl = Request.Url.Host.ToString()
Я знаю, что это более старый вопрос. Но мне нужен был тот же простой ответ, и это возвращает именно то, что задано (без http://).