将实体框架与Web代理一起使用

时间:2015-11-02 22:27:32

标签: c# .net entity-framework proxy http-proxy

我有一个使用Entity Framework Model First的项目。数据源在互联网上,我需要它使用网络/网络代理。我有谷歌它,但我找不到任何有用的结果,因为所有结果都是EF's Entities Proxies。 一些有用的代码:

连接字符串:

<add name="ConnectionName" connectionString="metadata=res://*/Latin.csdl|res://*/Latin.ssdl|res://*/Latin.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=mssqlserver.server.com;initial catalog=DatabaseName;user id=admin;password=adminPass;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

用法:

static void Main(string[] args)
    {

        //set the proxy
        var proxy = new WebProxy("109.32.24.24", 808);
        proxy.Credentials = new NetworkCredential("", "");
        WebRequest.DefaultWebProxy = proxy;

        var db = new ContextName();

        if (db.QNames.First().Name == "Testing")
        {
            Console.WriteLine("Success Connection!");
            Console.ReadKey();
        }

    }

这会引发网络连接错误。

修改

网络的代理正在通过http协议运行。我知道http is the protocol you normally use to browse the web with, you do not usually connect to databases with it,但它是唯一可用的,这个问题是关于它的。您可以将Web代理用于多个.net连接,甚至是Web服务,我的问题是关于将它与EF一起使用,我无法使其正常工作。最后一个解决方案可能是使用像Proxifier这样的程序,并将所有计算机的连接重定向到指定的Web代理,但这个想法使其更具可配置性。

1 个答案:

答案 0 :(得分:1)

  

此应用程序可能在无网络网络中运行,获取Internet的唯一方法是使用HTTP代理

然后你不能这样做,或者至少不容易。

当网络配置为只有HTTP流量可能离开网络时,您将被限制为......仅进行HTTP呼叫。 SQL Server的有线协议是一种自定义的专有二进制协议,它不以任何方式与HTTP相似。因此,如果HTTP是您唯一的出路,则无法通过HTTP代理连接到SQL Server的远程实例。那是why I asked what kind of proxy you're talking about,因为例如SOCKS代理确实允许任意TCP连接通过它,Windows supports it natively

但是,您可以通过代理设置HTTP隧道。见Tunnel any kind of TCP traffic through HTTP/s。这假设您控制连接的两端,并且可以在应用程序软件旁边运行或安装任意软件(即隧道软件)。

根据客户端代理服务器的配置,这也可能有效,也可能无效。

然而,这看起来像XY problem。根据实际问题,有各种方法。

You do not want to expose, nor connect to SQL Server over the internet anyway

也许你可以编写一个webservice ,然后你的应用程序会消耗掉。 Web服务与HTTP进行通信,因此可以通过HTTP代理连接到该服务,无需任何其他配置或软件。 Web服务在SQL Server上或附近运行,您可以通过该服务公开您的业务逻辑 - 而不必公开您的SQL Server。

另一种选择是VPN连接,但同样,所有这些都取决于实际问题以及您可以控制的连接的哪一侧。

相关问题