WriteFile vs TransmitFile用于传输后需要从服务器删除的大文件

tbi*_*hel 5 c# asp.net writefile transmitfile

我必须触发用户下载大文件到webbrowser,我在那里创建要在服务器上传输的文件,然后立即删除它.我已经找到足够的例子来看我应该使用Response.TransmitFile或Response.WriteFile ......但是听说两者都有问题:

WriteFile是同步的,但它会在将文件发送给用户之前将文件缓冲在内存中.由于我正在处理非常大的文件,这可能会导致问题.

TransmitFile不在本地缓冲,因此它适用于大文件,但它是异步的,所以我无法在调用TransmitFile后删除该文件.显然刷新文件并不保证我也可以删除它?

处理这个问题的最佳方法是什么?

还有BinaryWrite ......我可以遍历文件流,将其复制到段中吗?

Kei*_*ler 4

这是一个很好的解决方案,它使用 TransmitFile 但允许您在使用委托完成后执行某些操作:

http://improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application

只需将最后的日志记录替换为文件删除即可。