2009-06-26 6 views
2

저는 asp.net 2.0을 사용하여 win2003에 작은 webapp를 작성하고 있습니다. 웹용으로 액세스 할 수있는 작은 파일을 만들어야하고 파일에 만료 시간이 10 분이 소요됩니다. 프레임 워크에서이 문제에 대한 지원을 찾지 못했고 다른 해결책은 파일을 X 분 동안 정리하는 작업을 예약하는 것이 었습니다. 그러나 어쨌든 나는이 문제를 경험하고 다른 스마트 솔루션이 있는지 궁금해하는 첫 번째 사람이 아니라고 생각합니다.만료 시간이있는 공용 임시 파일 만들기

미리 감사드립니다.

+0

원격 사용자에 대한 파일 액세스를 제어하기위한 목적입니까? –

답변

2

에서 수행 한 것과 유사한 무언가를, 나는 파일을 청소하는 외부 프로그램의 솔루션이 최선의 해결책이라고 생각 . 다른 방법으로 "파일"을 데이터베이스에 저장하고 "파일"이 만료되지 않은 경우에만 데이터베이스에서 데이터를 검색하는 처리기를 만들 수 있습니다. 그런 다음 데이터베이스에서 정리 작업을 훨씬 덜 빈번히 예약하고 만료되지 않은 "파일"만 제공 할 수 있습니다. 디스크에 작성하면 만료 된 항목을 더 이상 사용할 수 없도록 규칙적인 일정으로 정리해야합니다.

파일을 처리하기 전에 디스크에있는 파일로 처리기를 만들고 생성 날짜를 확인할 수도 있습니다. 이 경우 실제 파일이 들어있는 폴더는 웹 사이트 외부 또는 일반 사용자의 직접 액세스를 금지하는 제한된 영역에 있어야합니다.

0

작기 때문에 간단하게 유지하려면 웹 사이트에 대한 모든 N 요청을 확인하십시오. 정리할 파일의 수가 많아 질 수 있다고 생각되면 정리를 위해 몇 개를 찾은 후 정리를 중지하고 다음 요청을 정리해보십시오. 장점은 외부 작업을 관리 할 필요가 없다는 것입니다 (설치 및 실행 유지 등).

아마도 큰 사이트에는 적합하지 않습니다.

0

원격 사용자에 대한 파일 액세스를 제어하는 ​​목적은 있습니까?

만료 된 디렉토리/파일을 주기적으로 제거하기 위해 Windows 서비스 또는 예약 된 콘솔 앱을 만들 수 있습니다. 또는 웹 페이지의 파일에 직접 링크하지 않고 웹 응용 프로그램에서 파일 응답을 관리하도록 할 수 있습니다. 파일이 특정 나이를 지나면 파일을 반환하지 않기 위해 앱을 코딩하면됩니다. 여기

당신이이 일을하는 이유에 대한 자세한 내용을 모른 채 내가 과거

protected void Button1_Click(object sender, EventArgs e) 
     { 
      string fileName = @"c:\SecureDirectory\DownloadableFile.txt"; 
      int exipireMinutes = -10; 

      if (System.IO.File.Exists(fileName) && System.IO.File.GetCreationTime(fileName) >= DateTime.Now.AddMinutes(exipireMinutes)) 
      { 
       byte[] fileBinary; 
       using (System.IO.FileStream fs = System.IO.File.Open(Server.MapPath(fileName), System.IO.FileMode.Open)) 
       { 
        fileBinary = new byte[fs.Length]; 
        fs.Read(fileBinary, 0, Convert.ToInt32(fs.Length)); 
       } 
       Response.AddHeader("Content-disposition", "attachment; filename=" + fileName); 
       Response.ContentType = "application/octet-stream"; 
       Response.BinaryWrite(fileBinary); 
       Response.End(); 
      } 
     }