我有一个临时文件对象,它包裹File
并在调用Dispose()
时将其删除。从我所看到的情况来看,当我使用StreamContent
返回响应时,文件流将保持打开状态,直到响应处理完毕。
不幸的是,调用处理请求范围以及后续调用File.Delete()
是在响应管道的消耗读取有时间自行关闭之前进行的(尽管读完了?)。
我的短期修复是创建一个StreamContent
子类型,在完成后手动处理临时文件,同时在我的容器配置中注册为ExternallyOwned
。
我可以看到一些重新考虑;
注册创建的文件,然后依靠工作人员进行清理(放在Temp文件夹中,因此手动清理奇怪的丢失文件并不重要)
创建一个自定义范围,其生命周期在请求和响应之外。
TemporaryFileContent
处理处理的当前方法
归结为当资源尚未作为Response
的一部分完全释放时被调用的处理,我问这个问题主要是衡量是否使用IDispose
作为临时文件清理机制请求范围是一个好主意。这些文件的设计目的不是在当前请求之外,因此它似乎很合适,但我可能会误用它。