2016-10-06 5 views
1

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

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

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

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

ответ

2

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

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

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

  1. Попробуйте получить доступ к URL, хотя веб-браузер на компьютере, что код неисправного на.
  2. Установите тайм-аут на что-то разумное, как за одну минуту, и запустите запрос на таймаут.
  3. Попробуйте pinging удаленный сервер с клиентской машины.
  4. Используйте продукт, например Fiddler, чтобы проверить, что на самом деле отправляется и принимается.
  5. Побеседовать с сетевым провайдером, чтобы узнать, сможете ли они помочь.
  6. Проверьте журналы сервера, чтобы проверить, не ошибся ли сервер.
  7. Измените первый журнал на Log.Write("Log before: " + url);, чтобы проверить, что на самом деле запрашивается.
+0

Спасибо @ martin. Фактически я уже пробовал точку «7», и URL-адрес правильный, я не публиковал все, но на самом деле я пробовал записывать много информации. Point '1' Я собираюсь попробовать, однако я уже пробовал поставить простой якорь на моей странице с той же ссылкой, и он показывает мне PDF. Я попытаюсь нажать URL прямо с сервера в какой-то момент. О точке '2', на самом деле раньше я вообще не использовал тайм-аут, но тогда он также не работал, я поместил этот таймаут после этого только для тестирования. Point '6', я уже проверил просмотрщик событий на сервере перед публикацией квеста, и ничего не было там :( –

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