.net - ADO .Net - 如何在具有多个 IP 地址的系统上的 SqlConnection 中指定源 IP 地址

标签 .net sql-server wcf ado.net asmx

我的服务器的网络适配器配置了多个 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 网络服务客户端的方式,我可以在其中通过回调指定源 IP 地址:

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 对象是否有类似的东西?

最佳答案

我不知道 SQLConnection 对象上有任何指定本地 IP 的设置。

但是,您可以设置自定义 Windows 防火墙规则来阻止源 IP(备用网络适配器)的远程 IP (SQL)。

关于.net - ADO .Net - 如何在具有多个 IP 地址的系统上的 SqlConnection 中指定源 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26957609/

相关文章:

c# - WPF 将内容展开到窗口外

sql - 如何选择sql索引

mysql - 构建一个按月分割支出的查询。 (将一行变成多行)

c# - WCF HTTP 发布 : How to bind Json data to C# Model

c# - 托管在 Windows 服务中的 WCF 服务运行速度比控制台应用程序慢 10 倍

c# - 如何在类级别从 PropertyInfo 获取 DataContract 属性?

c# - 点网核心 3.1 : How to use AddJsonFile with absolute path to file?

sql-server - nodejs mysql批量插入到临时表

c# - WCF Duplex - 如何找到客户端的回调 URL?

仅使用默认库的 C# Camera Capture