如何使用Asp.net删除临时文件

时间:2010-02-18 06:30:13

标签: asp.net vb.net

在我的应用程序中,我有一些需要经常查看的报告。不同用户多次查看报告后,显示加载错误。对于不同的系统,会创建许多临时文件。我需要删除这些文件我的单个系统。现在我手动删除临时目录中的所有临时文件并再次配置IIS。然后报告正确加载。但是我们需要经常删除这些临时文件,这会让我们的生活变得糟糕。只有报告文件需要如何删除。如何使用代码自动删除这些临时文件?

我已经使用了以下代码。但是有些文件无法删除,因为这些文件正在使用中。其他系统中的临时文件是否会导致系统出现加载错误?我该如何解决?

dim temp as string=Environment.GetEnvironmentVariable("TEMP")
dim k as sting()=System.IO.Directory.GetFiles(temp)
dim i as integer

For i=0 to k.length
    On Error Resume Next
    If k(i).Contains(".rpt") then
        kill(k(i))
        System.IO.File.Delete(k(i))
Next

2 个答案:

答案 0 :(得分:1)

从Application_Start()创建一个线程(或编写一个独立的exe)

您可以自动执行您手动执行的操作。 您可以使用较旧的修改日删除这些文件,每小时一次,只需一个非常简单的程序。

答案 1 :(得分:0)

假设您要向用户展示这些临时文件,我建议您创建一个HTTP处理程序。处理程序将提供生成文件并将其传递给用户的功能,以便在浏览器中下载或查看。这种方法允许自定义缓存。

以下示例仅显示处理程序部分,这是基本的,因为它不会进入文件创建,因为我不确定您当前是如何创建文件的。您可以发送某种类型的流。

示例:(抱歉在C#中,但您可以从这里开始。)

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.IO;

namespace Handlers
{
    /// <summary>
    /// Summary description for $codebehindclassname$
    /// </summary>
    [WebService(Namespace = "http://www.tempuri.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class ColorImage : IHttpHandler
    {
        public bool IsReusable { get { return true; } }

        public void ProcessRequest(HttpContext context)
        {
            Bitmap bmGenerate = CreateBitmapMethod();
            context.Response.ContentType = "image/png";
            context.Response.AddHeader("Response-Type", "image/png");

            using (MemoryStream memoryStream = new MemoryStream())
            {
                bmGenerate.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
                memoryStream.WriteTo(context.Response.OutputStream);
            }
        }
    }
}