【问题标题】:C# - Testing Internet page - Waiting for timeoutC# - 测试 Internet 页面 - 等待超时
【发布时间】:2011-07-08 09:58:53
【问题描述】:

为了测试我们的计算机是否连接到防火墙,我们检查该防火墙的登录网页是否打开。如果超时,错误处理会说它已连接,如果它打开(或在我们的例子中抛出证书错误)我们知道我们没有连接。

这个过程的最大问题是,每当我们已经连接时,应用程序就会挂起,直到网页超时..

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

    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 而不是 url 创建这个连接:C# - Socket to log on to Firewall

【问题讨论】:

    标签: c# timeout


    【解决方案1】:

    也许使用 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

    【讨论】:

    • 后台工作者似乎是优雅地继续使用该应用程序的唯一方法。感谢您的意见
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2017-04-25
    • 2013-06-27
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多