C# - 测试Internet页面 - 等待超时

时间:2011-07-08 09:58:53

标签: c# timeout

要测试我们的计算机是否已连接到防火墙,我们会检查此防火墙的loginwebpage是否打开。如果它超时,错误处理会说它已连接,如果它打开(或抛出证书错误,就像我们的情况一样),我们知道我们没有连接。

这个过程的一个大问题是,无论何时我们已经连接,应用程序都会挂起,直到网页超时为止。

任何输入都非常受欢迎,这是我使用的代码:

    public static bool FirewallConnectivityStatus(string url)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Proxy = null;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (HttpStatusCode.OK == response.StatusCode)
            {
                response.Close();
                return false;
            }
            else
            {
                return true;
            }


        }
        catch (WebException Ex)
        {
            if (Ex.Status == WebExceptionStatus.TrustFailure)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

    }

更新 与此同时,我找到了一个套接字连接,这样我就可以通过IP代替网址来创建这种连接:C# - Socket to log on to Firewall

1 个答案:

答案 0 :(得分:2)

也许使用BackgroundWorker可以工作:

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

他们在该页面上有相当不错的例子。我以前从未考虑过尝试测试。我想不出一个简单的测试方法。看起来它之前也被问过:

C# API to test if a network Adapter is firewalled

至少后台工作者可以在等待超时时让你的程序继续。这取决于您是否可以在没有答案的情况下让应用继续进行测试。

减少超时时间怎么样? http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx