How to delete file after download with ASP.NET MVC?

asp.net-mvc, c#

Solution

You could create a custom actionfilter for the action with an OnActionExecuted Method that would then remove the file after the action was completed, something like

public class DeleteFileAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
        // Delete file 
    } 
} 

then your action has

[DeleteFileAttribute]
public FileContentResult GetFile(int id)
{
   ...
}

Problem

I want to delete a file immediately after download, how do I do it? I've tried to subclass `FilePathResult` and override the `WriteFile` method where I delete file after ``` HttpResponseBase.TransmitFile ``` is called, but this hangs the application. Can I safely delete a file after user downloads it?

Original source