C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のUri.CheckHostName()メソッドでホスト名の妥当性を検証する方法

C#におけるUri.CheckHostName()メソッドは、指定されたホスト名が有効なDNS名であるかどうかを判定するための静的メソッドです。文字列として渡されたホスト名を検証し、その種類に応じたUriHostNameType列挙型の値を返します。

戻り値について

このメソッドはUriHostNameType列挙型の値を返し、主に以下のような結果が得られます。

  • Dns … 有効なDNS形式のホスト名
  • IPv4 … 有効なIPv4アドレス
  • IPv6 … 有効なIPv6アドレス
  • Unknown … ホスト名として認識できない場合

構文

基本的な構文は以下のとおりです。

public static UriHostNameType CheckHostName(string host_name);

引数には検証対象のホスト名を表す文字列を指定します。

使用例1:URL全体を渡した場合

まず、スキームを含むURI文字列を渡した場合の動作を確認してみましょう。

using System;

public class Demo {
    public static void Main(){
        string strURI = "https://localhost";
        Console.WriteLine("URI = " + strURI);
        
        UriHostNameType res = Uri.CheckHostName(strURI);
        Console.WriteLine("Host type = " + res);
    }
}

出力結果

URI = https://localhost
Host type = Unknown

この例では「Unknown」が返されています。これは、CheckHostName()メソッドはスキーム部分(https://など)を含まないホスト名のみを検証対象とするためです。URL全体ではなく、ホスト名の部分だけを渡す必要があります。

使用例2:DNS形式のホスト名を渡した場合

次に、正しいDNS形式のホスト名を指定した場合の例を見てみましょう。

using System;

public class Demo {
    public static void Main(){
        string strURI = "www.tutorialspoint.com";
        Console.WriteLine("URI = " + strURI);
        
        UriHostNameType res = Uri.CheckHostName(strURI);
        Console.WriteLine("Host type = " + res);
    }
}

出力結果

URI = www.tutorialspoint.com
Host type = Dns

このように、有効なDNS形式のホスト名を渡すと「Dns」が返されます。

まとめ

Uri.CheckHostName()メソッドを使用すると、ユーザー入力や外部から取得したホスト名が正しい形式かどうかを簡単に検証できます。入力バリデーションの一環として活用することで、不正なホスト名によるエラーを事前に防ぐことができます。ただし、スキーム付きのURI文字列を渡すと「Unknown」になる点には注意が必要です。

  1. C#のSingleOrDefault()メソッドの使い方をわかりやすく解説

    SingleOrDefault()メソッドとはC#のLINQに含まれるSingleOrDefault()メソッドは、シーケンスから単一の特定要素を返すメソッドです。大きな特徴は、要素がシーケンス内に存在しない場合でも例外をスローせず、その型のデフォルト値を返すという点にあります。たとえば参照型の場合は null、数値型の場合は 0 といったデフォルト値が返されるため、空のコレクションを安全に扱いたい場面で非常に便利です。Single()メソッドとの違い似た名前の Single() メソッドは、要素が存在しない場合や複数の要素が見つかった場合に例外(InvalidOperationExcepti

  2. 【C#】String.Join()メソッドで文字列配列を連結する方法

    String.Join()メソッドとはC#のString.Join()メソッドは、文字列配列のすべての要素を1つの文字列に連結するためのメソッドです。各要素の間には、引数で指定した区切り文字(セパレーター)が自動的に挿入されます。たとえば、区切り文字として改行コード「\n」を指定すれば、配列の各要素がそれぞれ別の行に配置された、複数行の文字列を簡単に作成できます。基本的な構文String.Join(\n, starray);第1引数: 要素間に挿入する区切り文字第2引数: 連結対象の文字列配列戻り値: 連結された1つの文字列サンプルコード以下は、5つの文字列要素を持つ配列を改行コードで連結し、