当您在ASP.NET中收到上载的文件时,通常是通过HttpPostedFile
对象来实现的。接收到的数据可通过HttpPostedFile.InputStream
获得。这是一个属性,这使我相信我不需要自己处置它,但是文档中从未提及谁负责处置该流,并且如果它是由ASP.NET框架完成的,它何时这样做(例如,我可以在 session 中保存流吗?)。
现在,我没有收到那么多文件,也没有因为不处理该特定流而遇到问题,但是为了保持清洁-有人知道这里的设计契约(Contract)是什么吗?
最佳答案
根据我使用它的经验,我会说它在请求处理完成后立即发布。一个例子是我要把球扔向空中。如果我不捕获它,它就掉了……它就被丢弃了。如果我捕获它并对其进行处理...然后掉落,则将其丢弃。在下一个请求中,它不会随处可见!
解决将其存储在 session 中的问题,我会说“不!”!如果您需要将其放置一会儿,请将其写入文件系统。当您再次需要它时,将其重新构造为流并使用它。在 session 中存储文件流(也许是字节数组?)听起来像是在浪费 session (内存)资源。
关于asp.net - 谁负责处置HttpPostedFile.InputStream?何时负责?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1176575/