【问题标题】:Issues connecting C# app to remote server with Non-Split Tunnel VPN使用非拆分隧道 VPN 将 C# 应用程序连接到远程服务器的问题
【发布时间】:2015-05-22 01:33:10
【问题描述】:

我有 C# (.Net 4.5) Winforms 应用程序与托管在 Internet 上的网络服务器通信。

它完美无瑕,直到我打开限制性且不支持拆分隧道的 VPN。

只有按照以下步骤才能重现:

  1. 启动 .Net 应用程序并向服务器发出 HttpWebRequest - 这按预期进行。
  2. 连接 VPN 客户端。 VPN 配置为通过 VPN 路由所有流量(与 Intranet 资源的“拆分隧道”相反)
  3. VPN 连接后,网络请求在 .NET 应用程序中停止工作。 .NET 应用程序开始在HttpWebRequest.GetResponse 上获得通用的“无法连接到远程服务器”:

    
    System.Net.WebException: Unable to connect to the remote server --->
    System.Net.Sockets.SocketException: 
    A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond xxx.xxx.xxx.206:443 
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
    at System.Net.ServicePoint.ConnectSocketInternal(Boolean 
    connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, 
    ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
    --- End of inner exception stack trace ---
    at System.Net.HttpWebRequest.GetResponse()
    at DNSCacheTest.Form1.SendWebRequest(String url)
    

关闭 VPN,应用开始工作,请求再次通过。

如果在应用启动前VPN已经连接,则不会出现问题。

这适用于任何公共服务器,甚至是https://www.google.com

我一直关注 NetStat 日志以了解所有这些情况,这是我观察到的:

  • 如果我让应用程序继续运行并打开 VPN,应用程序仍会尝试使用旧的外部地址进行连接,但失败了。
  • 如果我在 VPN 开启的情况下重新启动应用程序,应用程序现在会连接到不同的代理外部地址,并且工作正常。

我每次都创建一个新的WebRequest。我尝试了所有可能的方法来强制应用程序每次都使用较新的地址,但无法这样做。

以下是我尝试过但没有奏效的几件事:

  1. 刷新的 DNS 恢复缓存
  2. 刷新的 ARP 缓存
  3. 已删除目标缓存
  4. 尝试通过同一个 .Net 应用实例多次 ping 服务器。
  5. 尝试在路由表中添加路由,以便将现有服务器 IP 路由到代理服务器 IP。

请指教。

【问题讨论】:

    标签: c# .net windows httpwebrequest vpn


    【解决方案1】:

    问题似乎出在 .Net 框架中,它没有获取更新的地址。

    为了解决这个问题,我在提交每个请求之前添加了:

    webRequest.Proxy = WebRequest.GetSystemWebProxy();
    

    这样,框架会从 IE 网络选项中明确选择更新的代理设置。

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 2016-02-13
      • 2014-05-03
      • 2017-01-01
      • 2017-08-31
      • 2017-09-27
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多