WebRequest.GetResponse ничего не возвращает

Я застрял с этим, я вызываю простой URL-адрес сервера отчетов, который возвращает PDF-файл отчета, но, как ни странно, метод WebRequest.GetResponse ничего не возвращает, когда я говорю это, я имею в виду, что код просто перестает выполняться в этот момент, без исключений, без ошибка, нет кода состояния, нет журнала просмотра событий на сервере, ничего!! И поэтому я не могу отладить его

это мой код

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.PreAuthenticate = true;
req.UseDefaultCredentials = true;
req.Credentials = CredentialCache.DefaultNetworkCredentials;
req.ImpersonationLevel = TokenImpersonationLevel.Impersonation;
req.Timeout = int.MaxValue;

Log.Write("Log before");

var response = req.GetResponse();

Log.Write("Log after");

Он просто печатает журнал Log before, после чего ничего не печатается.

Этот код отлично работает, когда я запускаю визуальную студию, и перестает работать, когда он развертывается на серверах разработки и тестирования!

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

Любые предложения, что я могу попытаться отладить?


person Pawan Nogariya    schedule 06.10.2016    source источник


Ответы (1)


Вы пробовали оставить его на 24 дня 20 часов 31 минуту и ​​24 секунды? Другими словами, оставили ли вы его так долго, как вы установили тайм-аут?

Сервер не возвращает ответ, и код ожидает int.MaxValue миллисекунд, чтобы сообщить вам об этом. Наиболее вероятной причиной этого является наличие части сетевой инфраструктуры между вашим клиентом и сервером, которая останавливает запрос. Это может быть брандмауэр или прокси. Это также может быть вызвано тем, что серверу не нравится запрос и он отказывается отвечать.

Вещи, которые я бы попробовал:

  1. Попробуйте получить доступ к URL-адресу через веб-браузер на компьютере, на котором код не работает.
  2. Установите время ожидания на что-то разумное, например одну минуту, и запустите запрос на время ожидания.
  3. Попробуйте пропинговать удаленный сервер с клиентского компьютера.
  4. Используйте такой продукт, как Fiddler, чтобы проверить, что на самом деле отправляется и принимается.
  5. Поговорите со своим сетевым провайдером, чтобы узнать, могут ли они помочь.
  6. Проверьте журналы сервера, чтобы увидеть, если сервер ошибся.
  7. Измените первый журнал на Log.Write("Log before: " + url);, чтобы проверить, что на самом деле запрашивается.
person Martin Brown    schedule 06.10.2016
comment
Спасибо @martin. На самом деле я уже пробовал пункт 7, и URL-адрес правильный, я не публиковал все, но на самом деле я пытался регистрировать много информации. Пункт 1 Я собираюсь попробовать, однако я уже пытался поставить простую привязку на свою страницу с той же ссылкой, и она показывает мне PDF. Когда-нибудь я попытаюсь получить URL-адрес напрямую с сервера. Насчет пункта 2, вообще-то раньше я таймаутом вообще не пользовался, но и тогда он не работал, после этого поставил этот таймаут просто для пробы. Пункт 6, я уже проверял вьювер событий сервера перед публикацией квеста и там тоже ничего не было :( - person Pawan Nogariya; 06.10.2016