2012-09-03 68 views
0

我正在開發一個應用程序,用於從xml feed中讀取數據。xml源包含大量數據,大約接近100MB。因此,從Feed會話超時讀取數據時發生在兩者之間。在asp.net中從xml源讀取大數據時避免超時

任何人都可以建議我如何避免超時。

我也試過延長執行時間和請求長度,但仍然沒有解決問題。

<httpRuntime executionTimeout="100000000" maxRequestLength="2097151" 
    useFullyQualifiedRedirectUrl="false" minFreeThreads="8" 
    minLocalRequestFreeThreads="4" appRequestQueueLimit="100" 
    enableVersionHeader="true" /> 

代碼從URL中讀取XML數據:

WebRequest wrGETURL; 
     wrGETURL = WebRequest.Create(sUrl); 

     HttpWebResponse wr = (HttpWebResponse)wrGETURL.GetResponse(); 
     StringBuilder sb = new StringBuilder(); 
     byte[] buf = new byte[8192]; 

     if (wr.StatusCode == HttpStatusCode.OK) 
     { 

      Stream resStream = wr.GetResponseStream(); 
      string tempString = null; 
      int count = 0; 
      do 
      { 
       count = resStream.Read(buf, 0, buf.Length); 
       if (count != 0) 
       { 
        tempString = Encoding.ASCII.GetString(buf, 0, count); 
        sb.Append(tempString); 
       } 
      } 
     } 
+1

什麼*方法*用於讀取XML文件?你*上傳文件? – adatapost

+0

@AVD:我編輯帖子並顯示了我用來從Feed中讀取數據的方法。 –

+0

看看SO線程[1](http://stackoverflow.com/questions/676274/what-is-the-best-way-to-parse-big-xml-in-c-sharp-code), [2](http://stackoverflow.com/questions/468948/in-c-sharp-what-is-the-best-way-to-parse-large-xml-size-of-1gb),[3] (http://stackoverflow.com/questions/55828/best-practices-to-parse-xml-files),[4](http://stackoverflow.com/questions/7671958/reading-large-xml-documents-中網) – adatapost

回答

0

您可以防止一些延遲由具有本地副本。飼料多久更換一次?如果底層數據很少發生變化,那麼經常使用XML Feed就沒有用處。你可以有一個預定的進程來「清新」本地數據副本。如果您每次下載頁面時嘗試下載100 MB,那麼您正遇到第一手問題。一旦擁有它,你對數據做什麼?也許你可以對數據運行XPath或LINQ to XML查詢來呈現你想要的部分。一些食物的思考...

0

我不知道你的具體要求,但作爲@DaveB說 - 如果你必須拉100MB,那麼你必須等待100MB。

要讀取的Feed是用戶嗎?如果是這樣的話,你可以使用ajax部分拉出xml - 所以獲得5MB的值並顯示它,然後獲得下一個5MB等等。或者可能是基於滾動條的Twitter風格ajax調用(如果這是如何完成的話)將起作用。

如果要在某些處理能力中使用Feed並且不會被用戶讀取,那麼請勿使用UI線程 - 獲取WCF或WEB API以在後臺檢索100MB。

從您的文章很難說出要求,但也許這些想法可能有幫助嗎?

相關問題