簡體   English   中英

WebRequest.GetResponse沒有返回任何東西

[英]WebRequest.GetResponse is not returning anything

我對此感到困惑,我正在調用一個簡單的報表服務器URL,該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打印日志,然后Log before日志之后不打印任何內容。

當我在Visual Studio中運行時,此代碼運行良好,而在開發和測試服務器中部署時,則停止工作!

我只是希望它能夠解決異常,或者返回未經授權的代碼或任何其他狀態代碼,那么我將能夠調試問題。

有什么建議可以嘗試調試嗎?

您是否嘗試過將其放置24天20小時31分24秒? 換句話說,您是否已將超時時間設置為已設置的時間?

服務器未返回響應,代碼正在等待int.MaxValue毫秒告訴您。 造成這種情況的最可能原因是,客戶端和服務器之間有一部分網絡基礎結構正在停止請求。 這可能是防火牆或代理。 這也可能是由於服務器不喜歡該請求並拒絕響應所致。

我會嘗試的事情:

  1. 嘗試通過代碼失敗的計算機上的Web瀏覽器訪問URL。
  2. 將超時設置為合理的時間(例如一分鍾),然后運行超時請求。
  3. 嘗試從客戶端計算機ping遠程服務器。
  4. 使用Fiddler之類的產品來檢查實際發送和接收的內容。
  5. 與您的網絡提供商聊天,以查看他們是否可以提供幫助。
  6. 檢查服務器日志以查看服務器是否已出錯。
  7. 將第一個日志更改為Log.Write("Log before: " + url); 檢查實際請求的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM