WriteFile调用是否正确同步,并且可以在调用之后立即删除写入的文件?什么时候可以在Response.WriteFile()中使用它后删除文件?
回答
这是完全同步的,因为你可以通过查看HttpResponse.WriteFile
实施与卢茨反射看到。您可以在拨打Response.WriteFile
后立即删除文件。
您不能保证响应流已被完全传输到客户端,但拨打Response.Flush
也不能保证您有任何担保。所以在删除文件之前我没有看到需要调用Response.Flush
。
避免将文件加载到MemoryStream
,它不会给您带来任何好处,并且会消耗内存,尤其是对于大文件。
如果内存服务它是同步的,就像其余的RESPONSE命令一样。
如果您正在使用Response.WriteFile()
向客户端写入文件,则调用Response.Flush()
将确保它已完全输出到客户端。完成后,您可以将其从网络服务器上删除。
如果文件是关键任务,您可能想要提供一个更强大的系统。假设客户端脚本验证文件已收到,然后警告Web服务器该文件可以被删除。
对我来说,以下方法起作用:`Response.Flush(); Response.Close(); File.Delete(path);` – Cosmin 2013-11-19 13:54:41
的TransmitFile
您也可以拨打的TransmitFile让IIS照顾它。它实际上是由您的工作进程之外的IIS发送的。
内存流
如果你比较偏执,不发送文件。将其加载到内存流(如果大小合理)并传输它。然后,您可以随时删除该文件。磁盘上的文件永远不会被IIS触及。
这是解决方案,使用后的语法Response.WriteFile(fileName);
,键入下面的代码行:
Response.Flush();
System.IO.File.Delete(fullPathFileName);
Response.End();
尽可能避免使用Response.End()。它抛出不可捕捉的异常并中止线程。最好使用`Response.SuppressContent = true; HttpContext.Current.ApplicationInstance.CompleteRequest();返回;而是。 – pawrog 2014-12-02 14:59:00
- 1. 什么是BigInteger,我们什么时候可以使用它?
- 2. 什么时候可以删除积压的用户故事
- 3. intn_t什么时候使用它,什么时候不使用
- 4. SqlCommand.Prepare()做什么以及它应该在什么时候使用?
- 5. 什么时候可以在Bash中使用|&?它可用于其他shell吗?
- 6. 你什么时候可以使用uint_least16_t
- 7. 什么时候可以使用filter_input()
- 8. 什么时候可以使用IORef?
- 9. 我什么时候可以使用AppDomain?
- 10. 什么时候可以使用XML文件来保存信息?
- 11. Twisted,gevent eventlet - 我什么时候可以使用它们
- 12. Python - 它什么时候写入文件
- 13. 什么是VSSVER.SCC文件,我可以删除它们吗?
- 14. 什么是'.save_docker /'文件夹?我可以删除它吗?
- 15. R的class.ind()函数做什么?我什么时候可以使用它?
- 16. 什么时候invokedynamic可以在标准的JDK中使用?
- 17. 在Java中,我什么时候可以通过sparseArray使用ArrayList?
- 18. 什么时候可以在Python中使用父类变量?
- 19. 什么时候在ASP.NET MVC中使用ViewBag/ViewData“可以接受”?
- 20. 什么时候可以调用BarcodeScanner.GetDefaultAsync()?
- 21. Symfony sfFormFilters - 你什么时候使用它?
- 22. 什么时候应该使用可可?
- 23. EGL_KHR_IMAGE < - 它是什么,什么时候应该使用它
- 24. 您什么时候可以使用In-Proc WCF组件?
- 25. 对于什么时候可以从Flash Player中删除AS2有何指导?
- 26. python sys.intern做什么,它应该在什么时候使用?
- 27. 什么时候DataView可用?
- 28. 什么是Xcode中的EmbeddedAppDeltas文件夹,我可以安全地删除它吗?
- 29. 什么时候使用for-each和什么时候在xslt中使用apply-templates?
- 30. 什么时候应该使用AWS,什么时候不使用
谢谢,这也帮助我! – 2012-03-29 18:14:20