0

xml フィードからデータを読み取るアプリケーションを開発しています。xml フィードには、約 100MB 近くの大量のデータが含まれています。そのため、フィード セッションからデータを読み取っている間にタイムアウトが発生します。

タイムアウトを回避する方法を教えてください。

また、実行タイムアウトとリクエストの長さを延長しようとしましたが、それでも問題は解決しません。

 <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);
                }
            }
         }
4

2 に答える 2

0

正確な要件はわかりませんが、@ DaveBが言ったように、100MBをプルする必要がある場合は、100MB待つ必要があります。

読み取るフィードはユーザーですか?その場合は、ajax を使用して xml を部分的に取得できます。つまり、5MB の価値を取得して表示し、次の 5MB を取得するなどです。または、スクロール バーに基づく Twitter スタイルの ajax 呼び出し (その方法である場合) が機能する可能性があります。

フィードが何らかの処理能力で使用され、ユーザーが読み取らない場合は、UI スレッドを使用しないでください。WCF または WEB API を取得して、バックグラウンドで 100 MB を取得します。

あなたの投稿から要件を伝えるのは難しいですが、おそらくこれらのアイデアが役立つでしょうか?

于 2012-09-03T08:24:26.417 に答える