2012-07-24 1 views
0

프로젝트에서 우리는 관리 응용 프로그램과 클라이언트 응용 프로그램을 가지고 있습니다. admin 응용 프로그램은 모든 클라이언트를 관리하는 데 사용됩니다.처리기를 사용하여 파일 다운로드 후 세션이 지워짐

그래서 서버 응용 프로그램에 로그인하면 관리자 자격 증명이 세션에 저장됩니다.

그 후 다른 브라우저에서 클라이언트 응용 프로그램에 액세스했습니다. 여기에는 다운로드 기능이 포함되어 있습니다. 다운로드 후에는 모든 세션 데이터가 지워집니다. 각 다운로드 후에 admin 모듈에서 다시 로그인해야합니다.

다운로드 핸들러는

   if (context.Request["fileUrl"] != null) 
       { 
        fileUrl = context.Request["fileUrl"].ToString();      
       } 
       string filename = System.IO.Path.GetFileName(fileUrl);  
       context.Response.ClearContent(); 
        context.Response.ContentType = "application/exe"; 
       context.Response.AddHeader("content-disposition", String.Format("attachment; filename={0}", filename)); 
       context.Response.TransmitFile(fileUrl);     
       context.Response.Flush(); 

나는 다운로드를 할 iframe을 사용했다. 그래서 다운로드 버튼이 파일

iframeDownload.Attributes["src"] = "DownloadHandler.ashx?fileUrl=" + downloadUrl; 
//code to be executed after download 
//here i am enabling a timer control 

뒤에

코드를 클릭하면 내가 iframe 대응의 소스를 설정합니다하지만 세션이 다운로드 후 클리어하는 이유는 찾을 수 없습니다. 나는이 SO 게시물에서 비슷한 문제를 발견했다. Session expires after file download

하지만 IE의 경우에만 발생하지만, 모든 경우 브라우저에서 발생합니다.

+1

해당 코드 줄에 아무것도 없으면 세션이 파괴 될 수 있습니다. 파일이 너무 큽니까? asp.net 프로세스가 재활용되도록합니다. – nunespascal

+0

@nunespascal : 아니요. 파일에 의존하지 않았습니다. 작은 파일 인 경우에도 발생합니다 .. –

+0

@nunespascal : 다운로드 후 db 업데이트가 있으므로 다운로드 한 후 db 값을 업데이트합니다. 동일한 버튼 클릭. 나는 이것이 어쨌든 어떤 세션 재활용에도 영향을 미치지 않을 것이라고 생각합니다. –

답변