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

ASP.NET MVC(C#)でクライアントのIPアドレスを取得する方法

ネットワーク上のすべてのマシンには、固有の識別子が割り当てられています。郵便物に宛先住所を書いて送るのと同じように、コンピュータもこの識別子を使って、ネットワーク上の特定のコンピュータへデータを送信します。現在、インターネット上のすべてのコンピュータを含むほとんどのネットワークでは、TCP/IPプロトコルが通信の標準として採用されています。TCP/IPプロトコルにおいて、コンピュータを識別するための固有の識別子こそが「IPアドレス」です。

HttpRequest.UserHostAddress プロパティを使う方法

ASP.NET MVCでクライアントのIPアドレスを取得する最もシンプルな方法は、RequestオブジェクトのUserHostAddressプロパティを参照することです。

コード例

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   public class HomeController : Controller{
      public string Index(){
         string ipAddress = Request.UserHostAddress;
         return ipAddress;
      }
   }
}

コントローラ以外からIPアドレスを取得する

コントローラの外側、たとえば通常のクラスの中でIPアドレスを取得したい場合は、HttpContext.Current経由でリクエスト情報にアクセスできます。

using System.Web;
namespace DemoMvcApplication.Helpers{
   public static class DemoHelperClass{
      public static string GetIPAddress(){
         string ipAddress = HttpContext.Current.Request.UserHostAddress;
         return ipAddress;
      }
   }
}

ServerVariablesを使う例

もうひとつの方法として、ServerVariablesコレクションの「REMOTE_ADDR」キーを指定して取得することも可能です。

using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
   public class HomeController : Controller{
      public string Index(){
         string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
         return ipAddress;
      }
   }
}

実行結果

ASP.NET MVC(C#)でクライアントのIPアドレスを取得する方法

このアプリケーションはローカル環境で実行しているため、localhostのIPアドレスとしては「::1」が表示されます。「localhost」という名前は、通常、IPv4のループバックアドレス「127.0.0.1」、およびIPv6のループバックアドレス「::1」に解決されます。

  1. C# ASP.NET Web APIでクエリ文字列パラメータを使ってAPIバージョニングを実装する方法

    ASP.NET Web APIにおいて、DefaultHttpControllerSelectorクラスは、URIでリクエストされたコントローラのアクションメソッドを選択する役割を担っています。 ここでは、次のようにクエリ文字列を使ってAPIのバージョン管理を実装するケースを考えてみましょう。 v=1 → StudentsV1Controller(バージョン1) v=2 → StudentsV2Controller(バージョン2) たとえば https://localhost:58174/api/student?v=1 のようにクエリ文字列でバージョン情報を渡した場合、404 Not Fou

  2. C# ASP.NET Web APIでアクションメソッドにエイリアス名を設定する方法

    アクションメソッドとはASP.NET Web APIでは、コントローラー内のpublicメソッドは「アクションメソッド」と呼ばれます。ここでは、ApiControllerクラスから派生したDemoControllerに、Get・Post・Put・DeleteといったHTTP動詞に対応する名前を持つ複数のアクションメソッドが定義されている例を考えてみましょう。基本的なアクションメソッドの定義例public class DemoController : ApiController{ public IHttpActionResult Get(){ // 何らかの処理