Допустим, я размещаю веб-сайт по адресу 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;
}
}
context.Request.Url.Port == 80
на (context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
или использовать ответ ниже
- person razon; 22.09.2014
Если пример URL-адреса 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
из "http://www.foobar.com/Page1"
это www.foobar.com
, а не foobar.com
.
- person tchelidze; 13.02.2019
Чтобы получить всю строку URL-адреса запроса:
HttpContext.Current.Request.Url
Чтобы получить часть запроса www.foo.com:
HttpContext.Current.Request.Url.Host
Обратите внимание, что вы в какой-то степени зависите от факторов, находящихся за пределами вашего приложения ASP.NET. Если IIS настроен на прием нескольких или любых заголовков хоста для вашего приложения, то любой из этих доменов, которые разрешены для вашего приложения через DNS, может отображаться как URL-адрес запроса, в зависимости от того, какой из них ввел пользователь.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => вернуть host.com
s.host.com => вернуть host.com
host.co.uk => вернуть host.co.uk
www.host.co.uk => вернуть host.co.uk
s1.www.host.co.uk => вернуть хост. co.uk
-- Добавление порта может помочь при работе с IIS Express.
Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port
Я знаю, что это старше, но правильный способ сделать это сейчас
string Domain = HttpContext.Current.Request.Url.Authority
Это позволит получить DNS или IP-адрес с портом для сервера.
Это также работает:
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();
Это вернет именно то, что вы просите.
Dim mySiteUrl = Request.Url.Host.ToString()
Я знаю, что это старый вопрос. Но мне нужен был такой же простой ответ, и он возвращает именно то, что спрашивают (без http://).
Request
. - person John Saunders   schedule 01.08.2009