私のプログラムは、いくつかのメソッドを公開し、複数のクライアントを持つWCFサービスです。これは、データベースのクライアントのリストを格納します。いくつかのメソッドでは、データベースから呼び出し元のデータを照会する必要があります。このquestion How can service know the caller?とリンクされた回答Get the Client’s Address in WCFは、発信者のIPを取得する方法を示しています。しかし、通常は私のクライアントテーブル内のアドレスフィールドには、IPアドレスを持っていないが、もののように:有効なエンドポイントアドレスです2つのエンドポイントアドレスが同じかどうかを確認する方法はありますか?
http://localhost:80/
http://computerName:80/
http://computerName.domain.com:80/
。私はリンクされた答えのソリューションを使用して、私は私の呼び出し元のIPを得ると想像してみましょう(たとえばhttp://192.80.212.21:80/
)。しかし、データベースでは、クライアントはhttp://computerName:80/
という名前で格納されています。これらの2つのアドレスが同じであることを確認すると、データベースから対応するクライアントのエントリを取得できます。
クライアントの数は非常に少ないため、データベースの各行を反復することによるパフォーマンスの問題はごくわずかです。あなたは、クライアントのIPアドレスを関連付けられているのホスト名を決定するためにDNSルックアップを行う必要があるでしょう
「http:// localhost:80 /」と「http:// computerName:80 /」は同じではありません。最初のものはマシンの外ではアクセスできません。したがって、異なる。実際に – Aliostad
です。しかし、クライアントが同じコンピュータからのものであれば、アドレスを入力した人はデータベースに入力することができ、同じことができます。 –