2010-12-29 6 views
3

クライアントマシンのIPアドレスをC#で取得するにはどうすればよいですか? 私はC#を使用するクライアントIP

アドバンス....私のオンラインアプリケーションのログレジスタを維持するために、私は、クライアントのIPアドレスを取得したいロギングシステムのIPアドレスを維持したいのおかげで...

+1

クライアントの接続方法サーバーのホスティングは何ですか? ASP.NET? WCF?いつか? – blowdart

+0

@blowdart:ASP.NET – Nithesh

+1

可能な複製http://stackoverflow.com/questions/735350/how-to-get-users-client-ip-address-in-asp-net –

答えて

6
HttpContext.Current.Request.UserHostAddress 

このプロキシを考慮に入れません。そのためには、Request.ServerVariables["HTTP_X_FORWARDED_FOR"]を使用できます。しかし、それが偽造されている可能性があるので、それを盲目的に信頼していないことを確認してください。信頼できるIPのホワイトリストを保持する方が良いでしょう。

+0

それは動作しません。 127.0.0.1を返します。私のシステムはネットワーク内にあります。私はクライアントシステムの実際のIPアドレスが欲しい。 – Nithesh

+2

@Nithesh、それは動作している。それは実際にサーバーに接続したIPです。これはあなたのサーバが 'localhost'にあることを意味します –

+0

Ok。ありがとう.. – Nithesh

8
String clientIP = 
(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]==null)? 
HttpContext.Current.Request.UserHostAddress: 
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 
+1

Wikipedia [注記](http://en.wikipedia.org/wiki/X-Forwarded-For)では、このヘッダーの値は偽である可能性があります。したがって、信頼できるIPのホワイトリストを保持する方が安全です。 –

+3

String clientIP = HttpContext.Current.Request.ServerVariables ["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.UserHostAddressこれは読みにくいですか? +1プロキシチェックのための1つ – naveen

+0

確かにそれはより読みやすいですが、私は.NetバージョンOPが使用しているか分からなかった。 – Chandu

関連する問題