it-roy-ru.com

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

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

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

89
core

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

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

метод Uri :: GetLeftPart :

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

riPartial Enumeration :

Схема и полномочия сегментов URI.

158
George

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

Если пример 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"
27
Dheeraj Palagiri
string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com"
27
Ben Lesh

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

HttpContext.Current.Request.Url

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

HttpContext.Current.Request.Url.Host

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

16
Rex M

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

Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port
4
JonathanC
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 => вернуть Host.co.uk

3
NQuenault

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

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

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

3
idlehands23

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

строка url = HttpContext.Request.Url.Authority;

3
Fribu - Smart Solutions
string domainName = Request.Url.Host
3
Sk93

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

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

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

1
tomepenn

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

string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
  scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();
1
Saul Dolgin
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;                                
}
1
Shawn Constance