Почему HttpWebRequest иногда выдает OperationCanceledException или WebException.timeout?

#c# #httpwebrequest

#c# #httpwebrequest

Вопрос:

Недавно я столкнулся с серьезной проблемой, когда я использую HttWebRequest для проверки функцию timeout and ReadWriteTimeout в моем проекте.

Есть два раздела кода, первый бросок

Необработанное исключение: Исключение System.Net.WebException: время ожидания операции истекло. в System.Net.HttpWebRequest.GetResponse()

 HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://www.stackoverflow.com");
request.Timeout = 5000;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

HttpWebRequest request2 = (HttpWebRequest) WebRequest.Create("https://www.stackoverflow.com");
request2.Timeout = 1;
 HttpWebResponse response2 = (HttpWebResponse) request2.GetResponse();
  

И следующий раздел code throw

Необработанное исключение: System.Исключение OperationCanceledException: операция была отменена. в System.Net.HttpWebRequest.GetResponse()

 HttpWebRequest request = (HttpWebRequest) WebRequest.Create("https://www.stackoverflow.com");
request.Timeout = 5000;
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

request = (HttpWebRequest) WebRequest.Create("https://www.stackoverflow.com");
request.Timeout = 1;
response = (HttpWebResponse) request.GetResponse();
  

Я озадачен, почему это вызовет другое исключение?

Я предполагаю, что одной из возможных причин является keep-alive значение по умолчанию? но у меня закружилась голова.

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

1. Вы когда-нибудь находили решение для этого? Я также испытываю это OperationCanceledException при вызове GetResponse . Исключение не задокументировано в документации для GetResponse .