エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Uri クラス

2013/12/12

URI (Uniform Resource Identifier) のオブジェクト表現を提供し、URI の一部へ簡単にアクセスできるようにします。

Namespace:  System
アセンブリ:  System (System.dll 内)

[TypeConverterAttribute(typeof(UriTypeConverter))]
public class Uri

Uri 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドUri(String)指定した URI を使用して、Uri クラスの新しいインスタンスを初期化します。
パブリック メソッドUri(String, UriKind)指定した URI を使用して、Uri クラスの新しいインスタンスを初期化します。このコンストラクターでは、URI を相対 URI、絶対 URI、または不確定のいずれかに指定できます。
パブリック メソッドUri(Uri, String)指定したベース URI と相対 URI 文字列に基づいて、Uri クラスの新しいインスタンスを初期化します。
パブリック メソッドUri(Uri, Uri)指定したベース Uri のインスタンスと相対 Uri のインスタンスの組み合わせに基づいて、Uri クラスの新しいインスタンスを初期化します。
このページのトップへ

  名前説明
パブリック プロパティAbsolutePathURI の絶対パスを取得します。
パブリック プロパティAbsoluteUri絶対 URI を取得します。
パブリック プロパティAuthorityサーバーの DNS (Domain Name System) ホスト名または IP アドレスと、ポート番号を取得します。
パブリック プロパティDnsSafeHostDNS の解決に安全に使用できるエスケープ解除されたホスト名を取得します。
パブリック プロパティFragmentエスケープ URI フラグメントを取得します。
パブリック プロパティHostこのインスタンスのホスト コンポーネントを取得します。
パブリック プロパティHostNameTypeURI に指定したホスト名の型を取得します。
パブリック プロパティIsAbsoluteUriUri インスタンスが絶対インスタンスであるかどうかの値を取得します。
パブリック プロパティIsDefaultPortURI のポート値が、このスキームの既定のポート値かどうかを示す値を取得します。
パブリック プロパティIsFile指定した Uri がファイル URI かどうかを示す値を取得します。
パブリック プロパティIsLoopback指定した Uri がローカル ホストを参照するかどうかを示す値を取得します。
パブリック プロパティIsUnc指定した Uri が UNC (Universal Naming Convention) パスかどうかを示す値を取得します。
パブリック プロパティLocalPathローカル オペレーティング システムでのファイル名表現を取得します。
パブリック プロパティOriginalStringUri コンストラクターに渡された元の URI 文字列を取得します。
パブリック プロパティPathAndQueryAbsolutePath プロパティと Query プロパティを疑問符 (?) で区切った形式で取得します。
パブリック プロパティPortこの URI のポート番号を取得します。
パブリック プロパティQuery指定した URI に含まれているクエリ情報を取得します。
パブリック プロパティSchemeこの URI のスキーム名を取得します。
パブリック プロパティSegments指定した URI を構成するパス セグメントを格納している配列を取得します。
パブリック プロパティUserEscapedUri インスタンスの作成前に、URI 文字列が完全にエスケープされたことを示します。
パブリック プロパティUserInfo指定した URI に関連付けられているユーザー名、パスワードなどのユーザー固有の情報を取得します。
このページのトップへ

  名前説明
パブリック メソッド静的メンバーCheckHostName指定したホスト名が有効な DNS 名であるかどうかを判断します。
パブリック メソッド静的メンバーCheckSchemeName指定したスキーム名が有効かどうかを判断します。
パブリック メソッド静的メンバーCompare指定した比較規則を使用して、2 つの URI の指定部分を比較します。
パブリック メソッドEquals2 つの Uri インスタンスを比較し、相互に等しいかどうかを判断します。 (Object.Equals(Object) をオーバーライドします。)
パブリック メソッド静的メンバーEscapeDataString文字列をエスケープ表現に変換します。
パブリック メソッド静的メンバーEscapeUriStringURI 文字列をエスケープ表現に変換します。
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッド静的メンバーFromHex16 進数の数字に対応する 10 進数値を取得します。
パブリック メソッドGetComponents指定した特殊文字エスケープを使用して、現在のインスタンスの指定したコンポーネントを取得します。
パブリック メソッドGetHashCodeURI を処理するためのハッシュ コードを取得します。 (Object.GetHashCode() をオーバーライドします。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドIsBaseOf現在の Uri インスタンスが、指定した Uri のベースかどうかを判断します。
パブリック メソッド静的メンバーIsHexDigit指定した文字が有効な 16 進数の数字かどうかを判断します。
パブリック メソッドIsWellFormedOriginalStringこの Uri の作成に使用された文字列が整形式であるかどうか、およびこれ以上エスケープする必要がないかどうかを示します。
パブリック メソッド静的メンバーIsWellFormedUriString文字列を使用して Uri を作成する際に、文字列が整形式であるかどうかを示し、文字列をそれ以上エスケープする必要がないことを確認します。
パブリック メソッドMakeRelativeUri2 つの Uri インスタンスの相違点を判断します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドToString指定した Uri インスタンスの正規文字列表現を取得します。 (Object.ToString() をオーバーライドします。)
パブリック メソッド静的メンバーTryCreate(String, UriKind, Uri)指定した String インスタンスと UriKind を使用して、新しい Uri を作成します。
パブリック メソッド静的メンバーTryCreate(Uri, String, Uri)指定したベース Uri および相対 String インスタンスを使用して、新しい Uri を作成します。
パブリック メソッド静的メンバーTryCreate(Uri, Uri, Uri)指定したベースおよび相対 Uri のインスタンスを使用して、新しい Uri を作成します。
パブリック メソッド静的メンバーUnescapeDataString文字列をエスケープ解除された表現に変換します。
このページのトップへ

  名前説明
パブリック演算子静的メンバーEquality2 つの Uri インスタンスの値が同じであるかどうかを判断します。
パブリック演算子静的メンバーInequality2 つの Uri インスタンスの値が同じでないかどうかを判断します。
このページのトップへ

  名前説明
パブリック フィールド静的メンバーSchemeDelimiterURI のアドレス部分と通信プロトコル スキームを区切る文字を指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeFileURI がファイルを指すポインターであることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeFtpファイル転送プロトコル (FTP: File Transfer Protocol) 経由で URI にアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeGopherGopher プロトコル経由で URI にアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeHttpHTTP (Hypertext Transfer Protocol) 経由で URI にアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeHttpsHTTPS (Secure Hypertext Transfer Protocol) 経由で URI にアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeMailtoURI が電子メール アドレスであり、SMTP (Simple Mail Transport Protocol) 経由でこの URI にアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeNetPipe"Indigo" システムの NetPipe スキームを使用して URI にアクセスするように指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeNetTcp"Indigo" システムの NetTcp スキームを使用して URI にアクセスするように指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeNewsURI がインターネット ニュース グループであり、この URI へ NNTP (Network News Transport Protocol) 経由でアクセスすることを指定します。このフィールドは読み取り専用です。
パブリック フィールド静的メンバーUriSchemeNntpURI がインターネット ニュース グループであり、この URI へ NNTP (Network News Transport Protocol) 経由でアクセスすることを指定します。このフィールドは読み取り専用です。
このページのトップへ

URI は、アプリケーションが使用できるイントラネットまたはインターネット上のリソースを簡潔に表す記述方式です。Uri クラスは、URI の解析、比較、結合などの URI 処理のためのプロパティとメソッドを定義します。Uri クラスのプロパティは読み取り専用です。変更可能なオブジェクトを作成するには、UriBuilder クラスを使用します。

"/new/index.htm" などの相対 URI は、ベース URI を基準にして展開し、絶対 URI に変換する必要があります。MakeRelativeUri メソッドは、必要に応じて絶対 URI を相対 URI に変換するメソッドです。

エスケープ シーケンスが含まれるスキーム ID を含む正しい形式の URI 文字列の場合、Uri コンストラクターではこの文字列をエスケープできません。

Uri のプロパティは、標準データ形式をエスケープ エンコーディングで返します。このとき、127 より大きい Unicode 値の文字はすべて、それと等価の 16 進数値に置換されます。URI を正規形式で格納するため、Uri コンストラクターは次に示すステップを実行します。

  • URI スキームを小文字に変換します。

  • ホスト名を小文字に変換します。

  • ホスト名が IPv6 アドレスである場合、標準の IPv6 アドレスが使用されます。ScopeId とその他のオプションの IPv6 データは削除されます。

  • 既定のポート番号と空のポート番号を削除します。

  • エスケープ表現や /./、/../、// などのシーケンスを圧縮することにより、階層構造の URI のパスを正規化します。エスケープ表現が圧縮されないスキームがいくつかあることに注意してください。

  • 階層構造の URI で、ホストの末尾がスラッシュ (/) ではない場合、スラッシュが追加されます。

  • URI 内の予約文字は、RFC 3986 に準拠してエスケープされます。

スキームによっては、コンストラクターの正規化の一部として、エスケープ表現が圧縮されます。URI がエスケープ シーケンスを圧縮するスキームには、file、http、https、net.pipe、net.tcp などがあります。その他のスキームではすべて、エスケープ シーケンスは圧縮されません。次に例を示します。たとえば 2 つのドット ".." を "%2E%2E" としてパーセント エンコードすると、URI コンストラクターはいくつかのスキームではこのシーケンスを圧縮します。たとえば、次のコード サンプルは、http スキームの URI コンストラクターを示しています。


    Uri uri = new Uri("http://myUrl/%2E%2E/%2E%2E");
    Console.WriteLine(uri.AbsoluteUri);
    Console.WriteLine(uri.Query);

このコードが実行されると、エスケープ シーケンスが圧縮された状態で次の出力が返されます。


http://myUrl/
/

次のコード サンプルは、ftp スキームの URI コンストラクターを示しています。


    Uri uri = new Uri("ftp://myUrl/%2E%2E/%2E%2E");
    Console.WriteLine(uri.AbsoluteUri);
    Console.WriteLine(uri.Query);

このコードが実行されると、エスケープ シーケンスが圧縮されていない状態で次の出力が返されます。


ftp://myUrl/%2E%2E/%2E%2E
/%2E%2E/%2E%2E

ToString メソッドを使用して、Uri クラスの内容をエスケープ エンコード URI 参照から判読可能な URI 参照へ変換できます。一部の予約文字が、ToString メソッドの出力でもエスケープされることがあるので注意してください。これは、ToString の戻り値から URI を明確に再作成するためです。

一部の URI には、フラグメント識別子とクエリの一方または両方が含まれています。フラグメント識別子とは、URI 上でシャープ記号 (#) の後に続く任意のテキストです。シャープ記号自体は、フラグメント識別子に含まれません。フラグメント テキストは、Fragment プロパティに格納されています。クエリ情報とは、URI 上で疑問符 (?) の後に続く任意のテキストです。クエリ テキストは Query プロパティに格納されています。

メモメモ:

URI クラスでは、IPv4 プロトコルのピリオド区切りの 10 進表記、および IPv6 プロトコルのコロン区切りの 16 進表記の、両方の IP アドレス形式を使用できます。なお、IPv6 アドレスの場合は、http://[::1] のように、角かっこで囲んでください。

Uri のコンストラクターを使用すると、Scheme プロパティのトピックに示した多くのスキームの Uri インスタンスをアプリケーションで作成できます。ただし、System.Net 名前空間の WebClient クラスと HTTP クラスでサポートされるのは、UriSchemeHttp スキームまたは UriSchemeHttps スキームの Uri インスタンスのみです。

International Resource Identifier は非サポート

Web アドレスは通常、次のような、非常に限定された文字セットから構成される、URI (Uniform Resource Identifier) を使用して表現されます。

  • 英語のアルファベットの大文字および小文字の ASCII 文字。

  • 0 ~ 9 の数字。

  • その他少数の ASCII 記号。

URI の仕様は、インターネット技術標準化委員会 (IETF: Internet Engineering Task Force) から発行された RFC 2396 および RFC 3986 に記述されています。

インターネットの普及と共に、英語以外の言語を使用してリソースを識別する必要も増えてきました。このニーズを満たし、かつ非 ASCII 文字 (Unicode/ISO 10646 文字セットの文字) を使用できる識別子に、IRI (International Resource Identifier) があります。IRI の仕様は、IETF から発行された RFC 3987 に記述されています。IRI を使用すると、URL に Unicode 文字を含めることができます。

Windows Phone の既存の Uri クラスでは、IRI や国際化ドメイン名 (IDN: Internationalized Domain Name) による解析のドメイン名への適用は現在サポートされていません。

Windows Phone のアプリケーションでは、Uri クラスから新しいクラスを派生できません。

パフォーマンスに関する注意事項

URI を格納した Web.config ファイルを使用してアプリケーションを初期化する場合、その URI のスキーム ID が標準のスキーム ID でないと、URI の処理に不要な時間がかかります。その場合、アプリケーションの中で影響を受ける部分を、アプリケーションの起動時ではなく、その URI が必要とされるときに初期化します。

呼び出し時の注意

セキュリティ上の理由から、アプリケーションでは、dontEscapetrue に設定して信頼されていないソースから Uri インスタンスを受け入れる場合に、注意する必要があります。

Uri クラスのインスタンスを作成し、このインスタンスを使用して WebRequest インスタンスを作成する例を次に示します。


Uri siteUri = new Uri("http://www.contoso.com/");

WebRequest wr = WebRequest.Create(siteUri);


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

表示:
© 2014 Microsoft