在ASP.NET webapi中,我将一个临时文件发送到客户端。我打开一个流以读取文件,并在HttpResponseMessage上使用StreamContent。客户端收到文件后,我要删除此临时文件(客户端无任何其他调用)
客户端收到文件后,将调用HttpResponseMessage的Dispose方法,并且还将处理流。现在,我现在也要删除临时文件。
一种实现方法是从HttpResponseMessage类派生一个类,重写Dispose方法,删除此文件并调用基类的dispose方法。 (我还没有尝试过,所以不确定是否可以正常工作)
我想知道是否有更好的方法可以实现这一目标。
最佳答案
实际上your comment帮助解决了这个问题...我在这里写过:
Delete temporary file sent through a StreamContent in ASP.NET Web API HttpResponseMessage
这对我有用。请注意,Dispose
中的调用顺序与您的注释不同:
public class FileHttpResponseMessage : HttpResponseMessage
{
private string filePath;
public FileHttpResponseMessage(string filePath)
{
this.filePath = filePath;
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
Content.Dispose();
File.Delete(filePath);
}
}