私は ASP.NET MVC スタックをまったく初めて使用するのですが、単純な Page オブジェクトと Request ServerVariables オブジェクトで何が起こっているのか知りたいのですが?
基本的にはクライアント PC の IP アドレスを抽出したいのですが、現在の MVC 構造がこれをどのように変更するのか理解できません。
私の知る限り、ほとんどの変数オブジェクトは HttpRequest のバリアントに置き換えられています。
リソースを共有してくれる人はいますか? ASP.NET MVC の世界では、学ぶべきことが本当にたくさんあります。 :)
たとえば、現在の関数を含む静的クラスがあります。 ASP.NET MVC を使用して同じ結果を達成するにはどうすればよいですか?
リーリーコントローラー ページからこの関数を呼び出すにはどうすればよいですか?
P粉8262835292023-10-15 00:43:26
Request.ServerVariables["REMOTE_ADDR"]
ビュー内またはコントローラーのアクション メソッド本体内で直接機能するはずです (リクエストは MVC のコントローラー クラスのプロパティであり、ページではありません)。 p>
正常に動作していますが、仮想 IIS ではなく実際の IIS で公開する必要があります。
P粉9039692312023-10-15 00:08:01
簡単な答えは、 HttpRequest.UserHostAddress プロパティ を使用することです。
例:コントローラ内部から:
リーリー例:ヘルパー クラスから:
リーリーただし、リクエストが 1 つ以上の プロキシ サーバー によって送信された場合、返される IP アドレス プロパティ HttpRequest.UserHostAddress が、リクエストを中継する最後のものになります。プロキシサーバーのIPアドレス。 プロキシ サーバー
は、事実上の 標準を使用して、クライアントの IP アドレスを XX-Forwarded-For HTTP ヘッダーに配置できます。リクエストに X-Forwarded-For ヘッダーがあるという事実に加えて、X-Forwarded-For が spoofed されていないという保証もありません。
元の回答リーリー 上記のコードは、コレクションを検索せずにクライアントの IP アドレスを提供します。 Request プロパティはコントローラー (またはビュー) で使用できます。したがって、Page クラスを関数に渡す代わりに、Request オブジェクトを渡して同じ結果を得ることができます。 リーリー