从特定IP地址发送SOAP请求

时间:2011-12-21 09:33:15

标签: vb.net soap asmx

我的系统有多个IP地址。但是我被允许仅从一个IP地址发起SOAP请求。我如何在VB.NET中获得它。

2 个答案:

答案 0 :(得分:2)

我从来没有这样做过。看起来很复杂。

首先,阅读Ways to Customize your ASMX Client Proxy以了解覆盖代理类的GetWebRequest对象的基本技巧。

您需要覆盖GetWebRequest,以便获取用于发出请求的ServicePoint。您将BindIPEndPoint属性设置为指向您的方法的委托,该委托将返回正确的IP地址。

public partial class Service1
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri);
        request.ServicePoint.BindIPEndPointDelegate = ReturnSpecificIPAddress;
        return request;
    }

    private IPEndPoint BindIPEndPoint(
        ServicePoint servicePoint,
        IPEndPoint remoteEndPoint,
        int retryCount)
    {
        return new IPEndPoint(IPAddress.Parse("10.0.0.1"), 80);
    }
}

答案 1 :(得分:0)

在WCF中创建ChannelFactory时,您可以指定端点(或您要连接的IP地址)。

 Dim factory As ChannelFactory(Of IChatServiceChannel)
 factory = New DuplexChannelFactory(Of IChatServiceChannel)(callbackObject, binding, endpoint)
 Dim Channel = factory.CreateChannel()

您可以通过指定不同的端点来连接到任意数量的不同IP。