C# WebAPI 2/MVC 5中作用域对象的处理

C# WebAPI 2/MVC 5中作用域对象的处理,c#,asp.net-web-api,autofac,C#,Asp.net Web Api,Autofac,我有一个临时文件对象,它包装一个文件,并在调用Dispose()时将其删除。据我所见,当我使用StreamContent返回响应时,文件流保持打开状态,直到响应被释放 不幸的是,在响应管道中的消费读取有时间自行关闭之前(尽管完成了读取?),调用dispose请求作用域以及随后调用File.Delete() 我的短期解决方案是创建StreamContent的子类型,在完成后手动处理临时文件,同时在我的容器配置中注册为ExternallyOwned 我可以看到一些重新考虑 注册创建的文件,然后依靠

我有一个临时文件对象,它包装一个
文件
,并在调用
Dispose()
时将其删除。据我所见,当我使用
StreamContent
返回响应时,文件流保持打开状态,直到响应被释放

不幸的是,在响应管道中的消费读取有时间自行关闭之前(尽管完成了读取?),调用dispose请求作用域以及随后调用
File.Delete()

我的短期解决方案是创建
StreamContent
的子类型,在完成后手动处理临时文件,同时在我的容器配置中注册为
ExternallyOwned

我可以看到一些重新考虑

  • 注册创建的文件,然后依靠工作人员进行清理(放在临时文件夹中,因此手动清理丢失的零星文件没有什么大不了的)

  • 创建其生命周期在请求和响应之外的自定义范围

  • 当前方法,即处理临时文件内容

它归结为当资源未作为
响应
的一部分完全释放时调用的处置,我问这个问题主要是为了评估使用
IDispose
作为带有请求范围的临时文件清理机制是否是一个好主意。这些文件并不是设计为在当前请求之外有一个生命周期的,所以它看起来很适合,但我可能误用了它