在我的应用程序中,我有一些需要经常查看的报告。不同用户多次查看报告后,显示加载错误。对于不同的系统,会创建许多临时文件。我需要删除这些文件我的单个系统。现在我手动删除临时目录中的所有临时文件并再次配置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
答案 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);
}
}
}
}