C # - Тестирование интернет-страницы - Ожидание таймаута - PullRequest
0 голосов
/ 08 июля 2011

Чтобы проверить, подключен ли наш компьютер к брандмауэру, мы проверяем, открывается ли страница входа в систему для этого брандмауэра. Если время ожидания истекло, обработка ошибок сообщит, что она подключена, если она открывается (или выдает ошибку сертификата, как в нашем случае), мы знаем, что мы не подключены.

Большая проблема в этом процессе заключается в том, что когда мы уже подключены, приложение зависает до истечения времени ожидания веб-страницы.

Любой ввод приветствуется, вот код, который я использую:

    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 # - Сокет для входа в брандмауэр

1 Ответ

2 голосов
/ 08 июля 2011

Может быть, использование BackgroundWorker может работать:

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

У них есть довольно приличный пример на этой странице. Я никогда не думал о попытке проверить это раньше. Я не могу придумать простой способ проверить это. Похоже, его уже спрашивали:

C # API для проверки, защищен ли сетевой адаптер брандмауэром

По крайней мере, фоновый работник мог позволить вашей программе продолжаться в ожидании времени ожидания. Это зависит только от того, сможете ли вы позволить приложению продолжить работу в тот момент, когда вы тестируете его без ответа.

Как насчет сокращения периода ожидания? http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...