簡體   English   中英

如何解決“操作已超時”錯誤

[英]How to Resolve “The operation has timed out” error

我有一個問題,即在下載數據時顯示錯誤“操作已超時”。

我能做些什么來解決這個錯誤? 我正在使用 Win forms(C#) 這是我的代碼,請檢查並提出建議。 我應該在哪里更改代碼,請幫助我...

  public void ProcessData()
        {


            try
            {
            string MessageTitle = "";
            int pages = Convert.ToInt32(txtPages.Text);

            for (int k = Count; k <= pages; k++)
            {

                string url = "http://www.yellowpages.com/" +StateName.ToLower()+ "/" + CategoryName + "?g=" + StateName + "&page=" + k + "&q=" + CategoryName + "";//txtYP.Text + k;
                System.Net.HttpWebRequest httpRequest;
                System.Net.HttpWebResponse httpResponse;
                System.IO.StreamReader SReader;
                string html;
                httpRequest = (System.Net.HttpWebRequest)(System.Net.HttpWebRequest.Create(url));
                httpRequest.Method = "GET";
                httpResponse = (System.Net.HttpWebResponse)(httpRequest.GetResponse());
                SReader = new StreamReader(httpResponse.GetResponseStream());
                html = SReader.ReadToEnd();
                string strDummy = html;
                httpResponse.Close();

在請求超時之前多長時間? 您是否能夠從 web 瀏覽器導航到 url?

HttpWebRequest.ReadWriteTimeout上的 HttpWebRequest.ReadWriteTimeout 屬性設置為比當前值高得多的值。 默認值為 5 分鍾。 不知道為什么需要超過 5 分鍾。

除了阻塞 getresponse,您還可以使用異步回調( BeginGetResponse / EndGetResponse )。

編輯

<system.diagnostics>
  <trace autoflush="true" />
  <sources>
    <source name="System.Net">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.HttpListener">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Sockets">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
    <source name="System.Net.Cache">
      <listeners>
        <add name="System.Net"/>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add
      name="System.Net"
      type="System.Diagnostics.TextWriterTraceListener"
      initializeData="trace.log"
      traceOutputOptions = "ProcessId, DateTime"
            />
  </sharedListeners>
  <switches>
    <add name="System.Net"
         value="Verbose" />
    <add name="System.Net.Sockets"
         value="Verbose" />
    <add name="System.Net.Cache"
         value="Verbose" />
    <add name="System.Net.HttpListener"
         value="Verbose" />
  </switches>
</system.diagnostics>  

在應用程序的 app.config 中的configuration部分中添加此部分。 添加上述內容后,重建解決方案並運行它。 查看應用程序的 bin 目錄中寫入的 trace.log 以了解更多詳細信息。

將此添加到您的代碼中:

httpRequest.Timeout = 3600000;

這會將請求超時增加到一小時。

在服務器上執行我的控制台應用程序時,我遇到了同樣的問題。 以下解決方案對我有用:

在 Internet 選項中取消選中 LAN 設置下的自動配置腳本並檢查自動檢測設置。 它解決了我的操作超時錯誤問題。

暫無
暫無

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

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