尽管连接 VPN 时可以手动访问 url,但 HttpWebResponse 为空

HttpWebResponse is null despite the url is accessible manually when VPN is connected

有些 url 只有连接 VPN 后才能访问。例如:http://jira.xxx.com。对于一家公司来说 'xxx'.

我想知道 C# 中是否有任何方法可以帮助我检查在连接 VPN 时我是否可以访问此 url。此处的核心目的是 return 如果 VPN 未连接则出现错误,要求用户重试。

这是我尝试使用 HttpWebRequest 和 HttpWebResponse 的方法,但即使连接了 VPN,我收到的响应也是空的。 (请知道我能够手动访问 url 但响应在代码中被视为 null,不知道为什么)

  public static bool IsUrlAccessible(string url)
  {
     try
     {
         HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;              
         request.Method = "HEAD"; 
        
         using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
         {
            response.Close();
            int statusCode = (int)response.StatusCode;

            Console.WriteLine("Status code is {0}", statusCode);

            if (statusCode >= 100 && statusCode < 400) 
            {
                return true;
            }                    
         }
                
      }
      catch (WebException ex)
      {
         Console.WriteLine("VPN is not connected."), ex);
      }            
      return false;       
   }

因为我访问的是 HTTPS 页面,所以我必须将服务点安全协议设置为 Tls12。因为我们可以设置多个协议。我采用了最优选的情况。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;