c# - 如何通过 HTTP 从 C# 应用程序连接到 SQL Server?

标签 c# asp.net sql .net sql-server

我们有一个遗留的 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 2008removed with SQL Server 2012 。但即使它仍然可用,我认为它也不允许直接 OLEDB 或 SqlClient 连接。

关于c# - 如何通过 HTTP 从 C# 应用程序连接到 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117336/

相关文章:

c# - 是否可以在 Swagger UI 的参数部分显示请求主体对象?

c# - ASP.NET页面如何实现异步加载?

php - SQL值必须大于其他值达到一个值

Javascript:如果定义了 php 变量,则执行一件事的函数

mysql - 如何获得每个唯一 'column' 的 SUM() ?

c# - 任务并行库 - 如何立即返回但有一个并行步骤

c# - 如何在对象上画一条虚线?

c# - 扩展 ASP.NET DropDownList

c# - WTSQueryUserToken 返回 FALSE

c# - ApplicationInsights TelemetryClient 在调试时初始化很慢