2010-02-18 7 views
1

내 응용 프로그램에서는 자주 볼 필요가있는 보고서가 있습니다. 여러 사용자가 여러 번 보고서를보고 난 후로드 오류가 표시됩니다. 다른 시스템의 경우 많은 임시 파일이 created.i는 단일 시스템에서 파일을 삭제해야합니다. 임시 디렉토리의 모든 임시 파일을 수동으로 삭제하고 IIS를 다시 구성하십시오. 그러면 보고서가 제대로로드됩니다. 그러나 이러한 임시 파일을 자주 삭제해야합니다. 보고서 파일을 삭제해야합니다. 코드를 사용하여 이러한 임시 파일을 자동으로 삭제할 수 있습니까?Asp.net을 사용하여 임시 파일을 삭제하는 방법

나는이 파일을 사용할 수 없기 때문에 일부 파일을 삭제할 수 없습니다. 다른 시스템의 임시 파일로 인해 시스템에로드 오류가 발생할 수 있습니까? 어떻게 해결할 수 있습니까?

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

+0

@ Shoban, 내 질문을 편집했습니다. 제발 그 – Nandini

답변

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

+0

수정 된 답변 샘플 포함 –

+0

답변이 잘못되었습니다. – Nandini

1

이 (독립형 EXE 또는 쓰기)을 위해 Application_Start()에서 스레드를 만듭니다

당신은 단지 무엇을 자동화 할 수 있습니다 당신은 수동으로하고 있습니다. 매우 간단한 프로그램을 사용하여 한 시간에 한 번 수정 자일 수있는 파일을 삭제할 수 있습니다.

+0

주기적으로 폴더를 검사하고 지우는 응용 프로그램 시작에서 별도의 응용 프로그램 스레드를 실행할 수 있다는 것에 동의합니다. 유일한 문제점은 삭제 루틴이 현재 액세스중인 파일을 삭제하려고 시도하는 경우입니다. 시간 소인을보고 사용자가 액세스하지 않는다고 확신하는 이전 파일을 지워서 문제를 줄일 수 있습니다. – Nikhil

관련 문제