如果他的第一个文件下载尚未完成,我想限制用户下载第二个文件,我的方法是在数据库中插入一个下载文件的记录,其中finish属性等于false;下载完成后我改变了finished = true;这样用户就可以下载另一个文件了。 为了知道下载是否已完成,我创建了一个名为ControlledFileStreamResult的类,该类派生自FileStreamResult。和一个实现IResultFilter的Filter。在这个过滤器;我以一种控制ControlledFileStreamResult中属性值的方式实现OnResultExecuted,如果DownloadCompleted == true则更新数据库并设置finished = true;或者如果DownloadCanceled == true,则从db。
中删除记录这种方法很有效,直到用户使用Internet Download Manager和类似的下载管理器程序下载文件;如果下载取消,OnResultExecuted无法捕获。并且当这些类型的程序使用多次发送的请求时,如果下载成功完成,我无法设法从db中删除记录或设置finished = true。