问题描述
有些网址只有在连接 VPN 后才能访问。例如:http://jira.xxx.com。对于公司,请说“xxx”。
我想知道 C# 中是否有任何方法可以帮助我检查连接 VPN 时是否可以访问此 url。这里的核心目的是在 VPN 未连接时返回错误,要求用户重试。
这是我尝试使用 HttpWebRequest 和 HttpWebResponse 进行的尝试,但是即使连接了 VPN,我也收到的响应为 null。 (请知道我可以手动访问 url,但代码中的响应显示为空,不知道为什么)
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;