私の ASP.NET アプリケーションでは、ユーザーが大きなファイルをアップロードおよびダウンロードできます。どちらの手順にも、ファイル ストリームの読み取りと書き込みが含まれます。大きなファイルを処理するときにアプリケーションがハングまたはクラッシュしないようにするにはどうすればよいですか? たとえば、ファイル操作はワーカースレッドで処理する必要がありますか?
3945 次
2 に答える
1
ファイルがシステム内の大量のメモリを消費しないように、ファイルを適切にバッファリングしてください。
e.g. excerpt from a download application, inside the while loop that reads the file:
// Read the data in buffer.
length = iStream.Read(buffer, 0, bufferSize);
// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);
Where bufferSize is something reasonable, e.g. 100000 bytes, the trade-off is that it will be slower for smaller buffer sizes.
http://support.microsoft.com/kb/812406
Edit: Also be sure that IIS is set to take a large enough request length (IIS7) and timeout.
于 2008-11-09T16:48:14.307 に答える
0
これがサイトの主な目的でない限り、これらの操作を別のアプリケーション (サブアプリケーションやサブドメインなど) に分割することを検討してください。これにより、リスクが軽減されるだけでなく、ユーザー ベースの拡大に伴うスケールアウトも簡素化されます。
于 2008-11-09T16:54:37.630 に答える