我们有一个遗留的 WinForms 应用程序(由其他人编写),它使用 ADO.NET(.NET 2.0、C#)直接连接到 SQL Server。我们想要教这个应用程序与距离很远的 SQL Server 进行通信(不在应用程序工作的同一个 LAN 中)。
我想到的第一个想法是以与 SSL Explorer ( http://sourceforge.net/projects/sslexplorer/ ) 相同的方式制作:制作一个隧道(仍然不知道如何)并将 ADO.NET 连接字符串更改为 127.0 .0.1:34761(某个端口),并且为了使 .NET 应用程序连接到本地端口(认为这是 SQL Server 实例),我们的代码将以某种方式将此流量重定向到我们的 Web 服务(接近真实 SQL 的位置)服务器是),并且我们的 Web 服务连接到真正的 SQL Server。
因此,总体目标是:在不修改 C# 应用程序的所有代码的情况下,在 Main() 方法的开头添加一些行(初始化隧道),并开发一个 ASP.NET Web 服务获取所有数据包并转发到真实的 SQL Server 实例。
问题:有人知道如何制作这样的“隧道”吗?
也许有人知道是否有一些工作示例?
最佳答案
如果您不想更改 C# 代码,基本上有以下选择:
创建 VPN(例如使用 PPTP、IPSec 或 OpenVPN)。这是最安全的选择。
配置 SQL Server 的防火墙以允许从客户端的 IP 访问 SQL Server 的端口。这是最不安全的选项。
在与 SQL Server 相同的网络中安装终端服务器并在那里运行您的应用程序。
曾经有一个通过 HTTP 连接到 SQL Server 的选项,但该功能 has been deprecated with SQL Server 2008和 removed with SQL Server 2012 。但即使它仍然可用,我认为它也不允许直接 OLEDB 或 SqlClient 连接。
关于c# - 如何通过 HTTP 从 C# 应用程序连接到 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117336/