URLからホストドメインを取得しますか?


143

文字列URLからホストドメインを取得する方法

GetDomainには1つの入力「URL」、1つの出力「ドメイン」があります。

例1

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com

例2

INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com

例3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost

「ホストドメイン」だけではなく「ホストドメイン」を完全に誤解しない限り、問題はURL のホストであり、ホストのドメインではないようです。回答がUri.Hostの種類のサポートに沿っているという事実は、質問の望ましい例と受け入れられた回答をより適切に反映し、一致させるために質問を更新する必要があるということです。
NoOneSpecial

回答:


266

Requestオブジェクトを使用するか、Uriオブジェクトを、URLのホストを取得できます。

Request.Urlの使用

string host = Request.Url.Host;

Uriの使用

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"

2
こんにちは、Request.Urlを使用したかったのですが、Visual Studioは依然としてシンボル 'Request'を解決できませんを返します。何が悪いのか分かりません。Visual Studio 2010とNet Framework 4.0を使用しています。誰かが症状を説明できますか?ありがとう
Michal

1
Webページ/サービスにあるRequestオブジェクトを使用可能にする必要がありますが、デフォルトではその背後にはありません。Requestオブジェクトを使用できない場合はUriクラスを使用できます
Adil

54

このようにしてみてください。

Uri.GetLeftPart( UriPartial.Authority )

Uri.GetLeftPartメソッドのURIの部分を定義します。


http://www.contoso.com/index.htm?date=today- > http://www.contoso.com

http://www.contoso.com/index.htm#main- > http://www.contoso.com

nntp://news.contoso.com/123456@contoso.com-> nntp://news.contoso.com

file://server/filename.ext-> file:// server

Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search");
Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));

Demo



15

次のステートメントを試してください

 Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
 string pathQuery = myuri.PathAndQuery;
 string hostName = myuri.ToString().Replace(pathQuery , "");

例1

 Input : http://localhost:4366/Default.aspx?id=notlogin
 Ouput : http://localhost:4366

例2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com

myuri.PathAndQueryが "/"の場合は機能しません。 "/"を ""に置き換えるだけです
NDependチームのPatrick

9

最良の方法、そしてそれを行う正しい方法はUri.Authorityフィールドを使用することです

次のようにUriをロードして使用します。

Uri NewUri;

if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri))
{
     Console.Writeline(NewUri.Authority);
}

Input : http://support.domain.com/default.aspx?id=12345
Output : support.domain.com

Input : http://www.domain.com/default.aspx?id=12345
output : www.domain.com

Input : http://localhost/default.aspx?id=12345
Output : localhost

Urlを操作する場合は、Uriオブジェクトを使用することをお勧めします。 https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx


1

これを試して

Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));

support.domain.comを出力します

または試す

Uri.GetLeftPart( UriPartial.Authority )


-2

WWWはエイリアスなので、ドメインが必要な場合は必要ありません。これは、文字列から実際のドメインを取得するためのlitllte関数です

private string GetDomain(string url)
    {
        string[] split = url.Split('.');
        if (split.Length > 2)
            return split[split.Length - 2] + "." + split[split.Length - 1];
        else
            return url;

    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.