ASP.NET: Как я могу получить доменное имя без каких-либо поддоменов? - PullRequest
6 голосов
/ 03 января 2011

Я искал здесь на SO, но я не могу найти ответ на этот вопрос.У меня чертовски много времени выясняется, есть ли метод, который даст мне только основной домен из HttpContext.Current.Request.Url?

Примеры:

http://www.example.com>example.com
http://test.example.com> example.com
http://example.com> example.com

Заранее спасибо.

Редактировать

только для пояснения.Это для использования только на моих собственных доменах и не будет использоваться на каждом существующем домене.
В настоящее время существует три суффикса, с которыми мне нужно иметь дело.

  • .com
  • .ca
  • .local

Ответы [ 4 ]

7 голосов
/ 03 января 2011
public static void Main() {
    var uri = new Uri("http://test.example.com");

    var fullDomain = uri.GetComponents(UriComponents.Host, UriFormat.SafeUnescaped);
    var domainParts = fullDomain
        .Split('.') // ["test", "example", "com"]
        .Reverse()  // ["com", "example", "test"]
        .Take(2)    // ["com", "example"]
        .Reverse(); // ["example", "com"]
    var domain = String.Join(".", domainParts);
}
1 голос
/ 03 января 2011

См. здесь для списка суффиксов, допускающих произвольную регистрацию.

Найдите самый длинный суффикс полного доменного имени в этом списке, а затем верните все после последнего . перед этим суффиксом.

0 голосов
/ 03 января 2011

Вот идея, которая мне пришла в голову.
@ Слэкс, я бы с удовольствием высказал твои мысли по этому поводу.

    ''# First we fix the StackOverflow code coloring issue.
    <Extension()>
    Public Function PrimaryDomain(ByVal url As Uri) As String

        If url.Host.Contains("example.com") Then Return "example.com"
        If url.Host.Contains("example.ca") Then Return "example.ca"
        If url.Host.Contains("example.local") Then Return "example.local"
        If url.Host.Contains("localhost") Then Return "localhost"

        Throw New Exception("The url host was not recognized as a known host name for this domain.")
    End Function
0 голосов
/ 03 января 2011

Получить список доменов верхнего уровня и сопоставить каждый домен с этим списком, заняв всего 1 слово после соответствия.

(вам может понадобиться добавить поддержку .co. ЭСТ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...