我的系统有多个IP地址。但是我被允许仅从一个IP地址发起SOAP请求。我如何在VB.NET中获得它。
答案 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。