如何解决尽管连接 VPN 时可以手动访问 url,但 HttpWebResponse 为空
有些网址只有在连接 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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。