Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как получить URI корневого домена в ASP.NET?

Автор вопроса: coreОтветов: 11

Допустим, я размещаю веб-сайт по адресу http://www.foobar.com.

Есть ли способ программно установить "http://www.foobar.com/" в моем коде? (т.е. без необходимости жесткого кода в моей веб-конфигурации)?

  • Поскольку это зависит от запроса, вы можете попробовать поискать в объекте Request. John Saunders 01.08.2009

url

Ответы

Ответ 1 · рейтинг 81 · JoshBerke

HttpContext.Current.Request.Url может получить вам всю информацию по URL. И может разбить URL-адрес на его фрагменты.

Ответ 2 · рейтинг 175 · George

string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);

Метод Uri::GetLeftPart а>:

Метод GetLeftPart возвращает строку, содержащую крайнюю левую часть строки URI, заканчивающуюся частью, указанной частью.

Перечисление UriPartial:

Сегменты схемы и полномочий URI.

Ответ 3 · рейтинг 122 · Brian Hasden

Для тех, кто все еще задается вопросом, более полный ответ доступен по адресу 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;
    }
}

Ответ 4 · рейтинг 38 · Dheeraj Palagiri

Если пример 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"

Ответ 5 · рейтинг 16 · Rex M

Чтобы получить всю строку URL-адреса запроса:

HttpContext.Current.Request.Url

Чтобы получить часть запроса www.foo.com:

HttpContext.Current.Request.Url.Host

Обратите внимание, что вы в какой-то степени зависите от факторов, находящихся за пределами вашего приложения ASP.NET. Если IIS настроен на прием нескольких или любых заголовков хоста для вашего приложения, то любой из этих доменов, которые разрешены для вашего приложения через DNS, может отображаться как URL-адрес запроса, в зависимости от того, какой из них ввел пользователь.

Ответ 6 · рейтинг 4 · NQuenault

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

Ответ 7 · рейтинг 4 · JonathanC

-- Добавление порта может помочь при работе с IIS Express.

Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port

Ответ 8 · рейтинг 3 · idlehands23

Я знаю, что это старше, но правильный способ сделать это сейчас

string Domain = HttpContext.Current.Request.Url.Authority

Это позволит получить DNS или IP-адрес с портом для сервера.

Ответ 9 · рейтинг 3 · Fribu - Smart Solutions

Это также работает:

URL-адрес строки = HttpContext.Request.Url.Authority;

Ответ 10 · рейтинг 1 · Saul Dolgin

Пример С# ниже:

string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
  scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();

Ответ 11 · рейтинг 1 · tomepenn

Это вернет именно то, что вы просите.

Dim mySiteUrl = Request.Url.Host.ToString()

Я знаю, что это старый вопрос. Но мне нужен был такой же простой ответ, и он возвращает именно то, что спрашивают (без http://).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы