我正在使用 .NET MVC3 开发一个网站。我有一个控制器,可以在其中将文件下载到客户端。
[DeleteFileAfterDownloadFilter()]
public FileResult DownloadVersion(int VersionID)
{
//staff to get the tempZipFile
return File(tempZipFile, "zip", "file.zip");
}
我喜欢做的是在下载此文件后删除该文件。我认为我可以使用ActionFilterAttribute
. 所以我写了下面的课程:
public class DeleteFileAfterDownloadFilter : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
string fileName = ((FileStreamResult)filterContext.Result).FileDownloadName;
File.Delete(fileName);
base.OnResultExecuted(filterContext);
}
}
我想我在这里有两个问题。第一个是,当我运行这个东西时,它给了我".../Company/DownloadVersion?versionID=2057"
找不到页面的错误。使它工作的方法是什么?
第二个问题是您可能已经意识到"((FileStreamResult)filterContext.Result).FileDownloadName"
可能不是我要删除的文件路径。它应该是控制器中的“tempZipFile”局部变量。但我不知道如何将该值传递给这个事件。