C# 使用非拆分隧道VPN将C应用程序连接到远程服务器时出现的问题

C# 使用非拆分隧道VPN将C应用程序连接到远程服务器时出现的问题,c#,.net,windows,httpwebrequest,vpn,C#,.net,Windows,Httpwebrequest,Vpn,我有一个C.NET4.5WinForms应用程序与internet上托管的Web服务器进行通信 它可以完美地工作,直到我打开VPN,它是限制性的,不支持拆分隧道 只能通过以下步骤进行复制: 启动.Net应用程序并向服务器发出HttpWebRequest-这将按预期进行。 连接VPN客户端。VPN配置为通过VPN路由所有流量,而不是内部网资源的拆分隧道 VPN连接后,webrequest在.NET应用程序中停止工作。.NET应用程序开始获取一个通用消息,无法连接到HttpWebRequest.Ge

我有一个C.NET4.5WinForms应用程序与internet上托管的Web服务器进行通信

它可以完美地工作,直到我打开VPN,它是限制性的,不支持拆分隧道

只能通过以下步骤进行复制:

启动.Net应用程序并向服务器发出HttpWebRequest-这将按预期进行。 连接VPN客户端。VPN配置为通过VPN路由所有流量,而不是内部网资源的拆分隧道 VPN连接后,webrequest在.NET应用程序中停止工作。.NET应用程序开始获取一个通用消息,无法连接到HttpWebRequest.GetResponse上的远程服务器:

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

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

这适用于任何公共服务器,甚至

我在NetStat日志上监视所有这些场景,下面是我观察到的:

如果我让应用程序保持运行并打开VPN,应用程序仍会尝试使用旧的外部地址进行连接,但会失败。 如果我在启用VPN的情况下重新启动应用程序,应用程序现在将连接到不同的代理外部地址,并且工作正常。 我每次都创建一个新的WebRequest。我尝试了所有可能的方法来强制应用程序每次都使用更新的地址,但都失败了

以下是我尝试过但没有成功的几件事:

刷新DNS恢复缓存 刷新的ARP缓存 已删除的目标缓存 已尝试通过同一.Net应用程序实例对服务器进行多次ping。 已尝试在路由表中将现有服务器IP路由添加到代理服务器IP。
请提供建议。

问题似乎出现在.Net framework中,它无法获取更新的地址

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

webRequest.Proxy = WebRequest.GetSystemWebProxy();
这样,框架就可以显式地从IE网络选项中获取更新的代理设置

webRequest.Proxy = WebRequest.GetSystemWebProxy();