Как устранить ошибку «Время ожидания операции истекло»

#c# #winforms #httpwebrequest #httpwebresponse

#c# #winforms #httpwebrequest #httpwebresponse

Вопрос:

У меня проблема в том, что при загрузке данных отображается ошибка «Время ожидания операции истекло».

Что я могу сделать, чтобы устранить эту ошибку? Я использую Win forms (C #) вот мой код, пожалуйста, проверьте его и дайте предложения. Где я должен изменить код, пожалуйста, помогите мне…

   public void ProcessData()
        {


            try
            {
            string MessageTitle = "";
            int pages = Convert.ToInt32(txtPages.Text);

            for (int k = Count; k <= pages; k  )
            {

                string url = "http://www.yellowpages.com/"  StateName.ToLower()  "/"   CategoryName   "?g="   StateName   "amp;page="   k   "amp;q="   CategoryName   "";//txtYP.Text   k;
                System.Net.HttpWebRequest httpRequest;
                System.Net.HttpWebResponse httpResponse;
                System.IO.StreamReader SReader;
                string html;
                httpRequest = (System.Net.HttpWebRequest)(System.Net.HttpWebRequest.Create(url));
                httpRequest.Method = "GET";
                httpResponse = (System.Net.HttpWebResponse)(httpRequest.GetResponse());
                SReader = new StreamReader(httpResponse.GetResponseStream());
                html = SReader.ReadToEnd();
                string strDummy = html;
                httpResponse.Close();
  

Ответ №1:

Сколько времени пройдет до истечения времени ожидания запроса? Можете ли вы перейти по URL-адресу из веб-браузера?

Установите HttpWebRequest.ReadWriteTimeout свойству HttpWebRequest значение, намного превышающее текущее. Значение по умолчанию равно 5 минутам. Не уверен, почему это должно занять более 5 минут.

Вместо блокировки getresponse вы могли бы также использовать асинхронные обратные вызовы ( BeginGetResponse / EndGetResponse ).

Редактировать

 <system.diagnostics>
  <trace autoflush="true" />
  <sources>
    <source name="System.Net">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.HttpListener">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Sockets">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Cache">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add
      name="System.Net"
      type="System.Diagnostics.TextWriterTraceListener"
      initializeData="trace.log"
      traceOutputOptions = "ProcessId, DateTime"
            />
  </sharedListeners>
  <switches>
    <add name="System.Net"
         value="Verbose" />
    <add name="System.Net.Sockets"
         value="Verbose" />
    <add name="System.Net.Cache"
         value="Verbose" />
    <add name="System.Net.HttpListener"
         value="Verbose" />
  </switches>
</system.diagnostics>  
  

Добавьте этот раздел внутрь configuration раздела в app.config вашего приложения.
После добавления вышеуказанного перестройте решение и запустите его.
Посмотрите на трассировку.зарегистрируйте запись в каталоге bin вашего приложения для получения более подробной информации.

Комментарии:

1. Спасибо за ответ,,, да, я могу перейти по URL-адресу из веб-браузера… как установить время Httprequest, пожалуйста, помогите мне …. где я могу написать код…

2. почему отображается эта ошибка «Запрос был прерван: соединение было неожиданно закрыто».

3. Мне кажется, вы забиваете запросами сайт, которым вы не владеете, и блокируетесь их контрмерами firewall bot.

4. Не уверен, какова точная причина сбоя. Вам нужно посмотреть трассировку стека. Посмотрите в разделе «РЕДАКТИРОВАТЬ» в моем ответе, как включить трассировку.

5. Привет, Виджай Сингари ….. на самом деле я использую winforms.so отсутствует файл app.config….

Ответ №2:

добавьте это в свой код :

HttpRequest.Время ожидания = 3600000;

это увеличит время ожидания запроса до одного часа.

Комментарии:

1. Привет, спасибо, что предоставили отсрочку … на самом деле мы не знаем, сколько времени это займет, это может быть 5 или 7 часов…..

2. тогда отложите это на 10 часов, некоторые программы имеют почти 24 часа в качестве тайм-аута для своих запросов. итак, это хорошо протестировано.

Ответ №3:

Я сталкиваюсь с такой же проблемой при выполнении моего консольного приложения на сервере. Приведенное ниже решение работает для меня :

Снимите флажок со скрипта автоматической настройки в разделе Настройки локальной сети в internet option и проверьте настройки автоматического обнаружения. Это решает мою проблему с ошибкой тайм-аута операции.