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

Скажем, у меня есть сайт http://www.foobar.com.

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

Ответ 1

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

Ответ 2

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

Uri:: Метод GetLeftPart:

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

UriPartial Enumeration:

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

Ответ 3

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

string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com"

Ответ 5

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

Ответ 6

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

HttpContext.Current.Request.Url

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

HttpContext.Current.Request.Url.Host

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

Ответ 7

string domainName = Request.Url.Host

Ответ 8

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

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

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

string url = HttpContext.Request.Url.Authority;

Ответ 12

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

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

Ответ 13

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;                                
}

Ответ 14

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

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

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