2つのエンドポイントを使用してサービスを公開するwcfサービスがあります。一方のエンドポイントはWebサービス呼び出しに使用され、もう一方のエンドポイントは残りを使用します。
サーバー機能が呼び出されているエンドポイントを判別する方法はありますか?
2つのエンドポイントを使用してサービスを公開するwcfサービスがあります。一方のエンドポイントはWebサービス呼び出しに使用され、もう一方のエンドポイントは残りを使用します。
サーバー機能が呼び出されているエンドポイントを判別する方法はありますか?
実際、私が思っていたのとは逆に、サービスが呼び出されたエンドポイントを見つけるのは実際には非常に簡単です。サービスメソッドに、次のコード行を追加します。
OperationContext oc = OperationContext.Current;
if(oc != null)
{
string wasCalledOn = oc.EndpointDispatcher.EndpointAddress.Uri.ToString();
}
しかし、私が言ったように:私はこれを非常に賢明かつ「防御的に」使用します-メソッドが呼び出されたエンドポイントに基づいてサービスの動作を変更し始めないでください-それは非常に悪い設計になります!
私はこれをいくつかのSOAPエンドポイントで試しました-RESTがどのように処理されるか100%確実ではありません(しかし、おそらく同じか非常に似ています)-試してみてください!
しかし、ロギングの場合、これは問題なく機能するはずです。
ここのブログエントリから持ち上げられました:
メソッド内の現在の操作コンテキストのチャネルでLocalAddressを確認する必要があります。
OperationContext.Current.Channel.LocalAddress