在 ASP.NET 中处理大文件传输时应采取哪些预防措施?

发布于 2024-07-08 19:07:53 字数 104 浏览 7 评论 0原文

我的 ASP.NET 应用程序允许用户上传和下载大文件。 这两个过程都涉及读取和写入文件流。 我应该如何确保应用程序在处理大文件时不会挂起或崩溃? 例如,文件操作是否应该在工作线程上处理?

My ASP.NET application allows users to upload and download large files. Both procedures involve reading and writing filestreams. What should I do to ensure the application doesn't hang or crash when it handles a large file? Should the file operations be handled on a worker thread for example?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

罪歌 2024-07-15 19:07:53

确保正确缓冲文件,以免它们占用系统中过多的内存。

例如,摘录自下载应用程序,在读取文件的 while 循环内:

// 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);

其中 bufferSize 是合理的,例如 100000 字节,权衡是较小的缓冲区大小会更慢。

http://support.microsoft.com/kb/812406

编辑:还要确保 IIS设置为采用足够大的请求长度 (IIS7)和超时。

Make sure you properly buffer the files so that they don't take inordinate amounts of memory in the system.

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.

慕烟庭风 2024-07-15 19:07:53

除非这是您站点的主要目的,否则请考虑将这些操作分区到单独的应用程序,例如子应用程序或子域。 除了降低风险之外,这还可以随着用户群的增长而简化扩展。

Unless this is the primary purpose of your site consider partitioning these operations to a separate application, e.g. a sub-application or sub-domain. Besides reducing risk this would also simplify scaling out as your user base grows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文