在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);
    }
}

10-02 02:36