我有一台服务器,其中一个网络适配器配置了多个IP地址。在服务器上安装了不同的ASMX和WCF web服务。出于某些安全原因,对于我从网络管理员那里收到的每个WEB服务,都有专用的源IP地址,以通过ADO.Net连接到指定的RDBMS。经过大量实验后,我得出结论:任何SqlConnection对象只能通过网络适配器上配置的第一个IP地址进行连接(第一个IP地址作为默认源IP地址)。
是否有办法指定SqlConnection对象的源IP地址?
我已经看到了类似问题的解决方案,例如Specify Source IP for ADO connection from Delphi to MySQL,但这种解决方案在我的情况下不适用。
我需要更像ASMX Web服务客户端中展示的方式,可以通过回调指定源IP地址的方法。
有没有类似于SqlConnection对象的东西?
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)base.GetWebRequest(uri);
webRequest.ServicePoint.BindIPEndPointDelegate += new System.Net.BindIPEndPoint(BindIPEndPointCallback);
return webRequest;
}
private IPEndPoint BindIPEndPointCallback(ServicePoint sp, IPEndPoint epRemote, int tries)
{
IPAddress ipLocal;
EndPoint epLocal;
IPAddress.TryParse(strIPAddr, out ipLocal);
if (tries <= 3)
{
epLocal = new IPEndPoint(ipLocal, 0);
}
else
{
throw new Exception(string.Format("BindIPEndPointCallback: error connecting via {0}", strIPAddr));
}
return (IPEndPoint)epLocal;
}
有没有类似于SqlConnection对象的东西?