我建立一个小的web应用上与WIN2003 asp.net 2.0。 我需要创建我想通过网络将accessable小文件和文件是假设有10分钟过期时间。 我没有找到在框架这方面的任何支持,我来考虑其他的解决办法是有一个清洁过的文件X分钟调度工作。但不知何故,我觉得我不是第一个遇到此问题,如果有任何其他的智能解决方案的疑惑。

预先感谢。

有帮助吗?

解决方案

不知道更多关于你为什么这样做,我觉得你的外部程序来清理文件出的解决方案是最佳的解决方案。另一种可能是存储在数据库中的“文件”,并创建一个从数据库中检索的数据的处理,但前提是“文件”未过期。然后,您可以安排数据库的清理任务更频繁,仍然仅用了未过期的“文件”。在磁盘上创建他们会迫使你做清理工作定期调度,确保过期项目将不再可用。

我想你也可以做磁盘上的文件处理程序和服务的文件之前检查创建日期。在这种情况下包含实际文件的文件夹将需要的以外的网站或在禁止从普通用户的直接访问限制区域。

其他提示

由于它的小,如果你想保持它的简单,只需要检查每一个N个请求在网站上。如果您认为文件清理的数量可以得到很大,停止你找几个干净后,让下一个请求清理几个清洗。其优点是,你不必管理外部工作(并安装它,并让它保持运行,等等)。

可能不是一个大的网站是个好主意。

时,以控制远程用户文件访问目的是什么?

您可以创建一个Windows服务或计划的控制台应用程序定期删除过期的目录/文件。或者,你可以让你的web应用程序管理文件的响应,而不是直接从你的网页链接到文件。一旦该文件是过去某个年龄只是编写你的应用程序根本就没有返回文件。

下面是类似我在过去做了什么

protected void Button1_Click(object sender, EventArgs e)
        {
            string fileName = @"c:\SecureDirectory\DownloadableFile.txt";
            int exipireMinutes = -10;

            if (System.IO.File.Exists(fileName) && System.IO.File.GetCreationTime(fileName) >= DateTime.Now.AddMinutes(exipireMinutes))
            {
                byte[] fileBinary;
                using (System.IO.FileStream fs = System.IO.File.Open(Server.MapPath(fileName), System.IO.FileMode.Open))
                {
                    fileBinary = new byte[fs.Length];
                    fs.Read(fileBinary, 0, Convert.ToInt32(fs.Length));
                }
                Response.AddHeader("Content-disposition", "attachment; filename=" + fileName);
                Response.ContentType = "application/octet-stream";
                Response.BinaryWrite(fileBinary);
                Response.End();
            }
        }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top