2010-02-18 6 views
1

Dans mon application, j'ai des rapports qui doivent être consultés fréquemment.Après avoir consulté les rapports plusieurs fois par différents utilisateurs, il montre l'erreur de chargement.Pour différents systèmes, de nombreux fichiers temporaires sont created.i besoin de supprimer ces fichiers dans mon seul system.now je supprime manuellement tous les fichiers temporaires dans le répertoire temp et configurer à nouveau les IIS.puis le rapport se charge correctement.Mais nous avons besoin de supprimer ces fichiers temporaires fréquemment ce qui rend notre vie redoutable.Seules les fichiers de rapport doit être supprimé.Comment puis-je supprimer ces fichiers temporaires automatiquement en utilisant le code?Comment supprimer des fichiers temporaires en utilisant Asp.net

J'ai utilisé le code suivant pour cela.mais certains fichiers ne peuvent pas être supprimés car ces fichiers sont utilisés.Est-ce que ces fichiers temporaires dans un autre système peuvent causer une erreur de chargement dans notre système? Comment puis-je résoudre ce problème?

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

s'ils sont utilisés, comment supprimez-vous manuellement? Aussi, cela n'aime pas une bonne solution. Pourquoi obtient-il heavey après seulement 5/6 recharges? – Shoban

+0

@ Shoban, j'ai modifié ma question.Veuillez voir que – Nandini

Répondre

0

En supposant que vous présentez ces fichiers temporaires à l'utilisateur, puis-je suggérer de créer un gestionnaire HTTP. Le gestionnaire fournira la possibilité de générer un fichier et de le livrer à l'utilisateur pour qu'il soit téléchargé ou visualisé dans le navigateur. Cette approche permet la personnalisation de la mise en cache.

L'exemple ci-dessous ne montre que la partie gestionnaire, elle est aussi simple que possible car elle ne va pas dans la création de fichier car je ne suis pas sûr de la façon dont vous créez les fichiers actuellement. Vous pouvez envoyer un flux de quelque sorte.

Exemple: (Désolé en C#, mais vous pouvez aller d'ici.)

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

comment puis-je faire cela? Pouvez-vous m'envoyer le code? – Nandini

+0

a modifié la réponse pour inclure l'échantillon –

+0

Votre réponse est incorrecte – Nandini

1

Créer un fil de la Application_Start() (ou écrire un fichier EXE autonome)

Vous pouvez simplement automatiser ce vous faites manuellement. Vous pouvez supprimer ces fichiers avec un jour de modification plus ancien, une fois par heure, avec un programme très simple.

+0

Je suis d'accord que vous pouvez avoir un thread d'application distinct qui s'exécute au démarrage de l'application qui vérifie périodiquement votre dossier et l'efface. Le seul défi est si votre routine de suppression tente de supprimer un fichier en cours d'accès. Vous pouvez réduire ce problème en examinant l'horodatage et en purgeant les anciens fichiers dont vous êtes sûr que vos utilisateurs n'ont pas accès. – Nikhil

Questions connexes