4

リクエストを特定の IP アドレス経由で送信したい。WCFでそれを行う方法はありますか。なぜこれが必要なのかについての説明は少し長くなってしまうので、そこには立ち入らないでください。

ここにサンプルコードがあります

string ipAddress = "192.168.0.32";
IService service;
ChannelFactory<IOmlService> factory = new ChannelFactory<IService>(new BasicHttpBinding(), new EndpointAddress("http://" + IPAddress + ":6996/IService"));
service = factory.CreateChannel();
service.Test();

これは、私が探しているものを正確に説明するためのシナリオの例です。マシンに 2 つの IP (192.168.0.30 と 192.168.0.31) があるとします。どちらも 192.168.0.32 に到達できます。ここでこのコードを実行すると、任意の IP (.30 または .31) から IP (.32) にヒットします。私の特定のIP(.30など)を強制的に通過させるにはどうすればよいですか。WCFを使用してそれを行う方法はありますか?

4

3 に答える 3

2

質問に対する答えは、それはできないということです。Microsoft MVP からの回答は次のとおりです。


クライアント側のマシンがネットワーク アダプター インターフェイス (インストールされている) の 1 つを事前に選択して、WCF 要求を送信できるようにしますか? WCF は次のアドレスにのみ焦点を合わせているため、これは WCF の管理外です。

** ホストとして動作する場合、特定のホスト名/アドレスにバインドしてクライアント要求をリッスンすることを選択できます ** クライアントとして動作する場合、要求を送信する宛先アドレス/ホスト名を選択できます。


于 2010-09-15T19:35:19.327 に答える
1

特定の IP アドレスからの要求のみを受け入れるように、サーバー上で IP-Sec に似たものを作成しようとしていますか?

この場合、IEndpointBehavior と IDispatchMessageInspector を実装する必要があります。

    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        RemoteEndpointMessageProperty remoteAddress =
            (OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as
             RemoteEndpointMessageProperty);

        // validate ip here
        return null;
    }
于 2010-09-06T14:54:10.263 に答える
0

ルーティングテーブルに追加のロートを設定することで問題を解決できるようです。管理者権限で起動したコマンド プロンプトから次の操作を試してください。

route add 192.168.0.32 mask 255.255.255.255 192.168.175.30

ルートを保存したい場合は、さらに -p スイッチを追加します。

于 2010-08-26T17:49:18.327 に答える