2011-01-27 3 views
0

Я использую fusemail в asp.net 2.0. Я использую HttpWebRequest для запроса страниц API. Недавно мне стало известно, что HttpWebRequest не удается выполнить первый раз, а затем продолжить и последующие запросы преуспеть.Почему HttpWebRequest не работает в первый раз, а затем работает нормально?

говорят (я знаю, если я использую Гото это плохой подход к программированию), если я использую этот код

retry: 
     try 
     { 
      Uri uri = new Uri("http://www.fusemail.com/api/request.html"); 
      if (uri.Scheme == Uri.UriSchemeHttp) 
      { 

       HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 
       request.PreAuthenticate = true; 
       request.Method = 
       WebRequestMethods.Http.Post; 

       //request.ReadWriteTimeout = System.Threading.Timeout.Infinite; 
       //request.Timeout = System.Threading.Timeout.Infinite; 
       request.ContentLength = data.Length; 
       request.ContentType = 
       "application/x-www-form-urlencoded"; 
       //request.UserAgent = Request.UserAgent; 
       request.UserAgent = "Mozilla/4.0"; 
       request.KeepAlive = false; 

       request.ServicePoint.Expect100Continue = true; 
       //request.Accept = "Accept: text/html,application/xhtml+xml,application/xml"; 


       StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
       writer.Write(data); 
       writer.Close(); 

       HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

       StreamReader reader = new StreamReader(response.GetResponseStream()); 
       string tmp = reader.ReadToEnd(); 
       response.Close(); 
       //Response.Write(tmp); 

       if (!String.IsNullOrEmpty(tmp)) 
       { 
        return tmp; 
       } 
      } 
      return String.Empty; 
     } 
     catch (WebException ex) 
     { 

      goto retry; 
     } 

он работает после неудачной один раз. Я пишу в текстовый файл в случае ошибки, и после того, как я отказал запрос, он работает во второй раз. Я использую ASP.Net 2.0, а веб-сайт размещен на IIS 7 с Windows Server 2008 Standard. Также пинг адреса API он не в первый раз, а затем отвечает

C:\>ping 67.207.202.118 

Pinging 67.207.202.118 with 32 bytes of data: 
Reply from 192.168.0.253: **Destination host unreachable**. 
Reply from 67.207.202.118: bytes=32 time=218ms TTL=49 
Reply from 67.207.202.118: bytes=32 time=218ms TTL=49 
Reply from 67.207.202.118: bytes=32 time=217ms TTL=49 

Ping statistics for 67.207.202.118: 
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), 
Approximate round trip times in milli-seconds: 
    Minimum = 217ms, Maximum = 218ms, Average = 217ms 

В первый раз он терпит неудачу в HttpWebRequest он терпит неудачу с этой ошибкой

System.Net.WebException: Не удается подключиться к удаленному серверу - -> System.Net.Sockets.SocketException: попытка подключения завершилась неудачно, потому что связанная сторона не ответила должным образом через какое-то время или установив соединение не удалось, так как подключенный хост не смог ответить 67.207.202.118:80

Is там проблема аутентификации в первый раз ?. я читаю на некоторых форумах, он сначала отправляет 401 Unauthorized, а затем может подключиться. Я не могу проверить это с помощью Fiddler.

Есть ли что-то неправильное в конфигурации IIS?

+1

Понятия не имею. Если ваш ping не работает, это указывает на сетевую проблему в вашей среде. Вы можете попробовать создать журнал трассировки system.net (см. Http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html) и посмотреть файл журнала, чтобы узнать, что HWR видит на сетевом уровне. – feroze

+0

Попробуйте выполнить telnet 67.207.202.118 80 из командной строки, чтобы узнать, можно ли открыть сокет для машины на порту 80. Также, вы вставляли в свой ping трассировку другого ip-192.168.0.253? –

ответ

1

Это не проблема программирования, я столкнулся с аналогичной проблемой позже, и это была проблема конфигурации сети из-за настроек ISA-сервера/брандмауэра. Чтобы проверить эту проблему, обратитесь к администратору сети.

Желаю, чтобы это вам помогло.

С уважением,

Mohamed Kamal Elbeah

Старший .Net Developer

+0

Какие настройки вы изменили на брандмауэре? –

 Смежные вопросы

  • Нет связанных вопросов^_^