2010-02-18 64 views
1

在我的應用程序,刪除臨時文件,我有一些報告,其中有待觀察frequently.After由不同的用戶查看報告很多次,這說明負載error.For不同的系統,許多臨時文件我需要在我的單個系統中刪除這些文件。現在我手動刪除臨時目錄中的所有臨時文件並再次配置IIS。然後報告正確加載。但我們需要經常刪除這些臨時文件,這些文件會讓我們的生活可怕。只有報告文件需要刪除。如何使用代碼自動刪除這些臨時文件?如何使用Asp.net

我用下面的代碼this.but一些文件,這些文件是在use.Do在其他系統的臨時文件可能會導致我們的系統負載錯誤不能被刪除?我怎樣才能解決這個問題?

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

,如果他們都在使用,你如何手動刪除?這也不是一個好的解決方案。爲什麼在5/6重新加載之後它會變得越來越糟糕? – Shoban 2010-02-18 06:38:30

+0

@ Shoban,IHAVE編輯我question.please看到 – Nandini 2010-02-18 07:05:13

回答

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); 
      } 
     } 
    } 
} 
+0

我怎麼可以這樣?你能送我的代碼? – Nandini 2010-02-18 07:19:34

+0

編輯的答案,包括樣品 – 2010-02-18 07:35:39

+0

你的答案是不正確的 – Nandini 2010-02-19 06:37:58

1

創建一個從的Application_Start()線程(或寫一個獨立的EXE)

你可以只自動什麼你正在手動做。 您可以使用一個非常簡單的程序,使用較早的修飾符日,每小時一次刪除這些文件。

+0

我同意您可以在應用程序啓動時運行一個單獨的應用程序線程,以定期檢查您的文件夾並清除它。唯一的挑戰是如果您的刪除例程嘗試刪除當前正在訪問的文件。您可以通過查看時間戳並清除您確定用戶未訪問的舊文件來減少此問題。 – Nikhil 2010-03-12 04:51:38