2012-07-24 104 views
0

在我們的項目中,我們有一個管理應用程序和一個客戶端應用程序。 管理應用程序用於管理所有客戶端。使用處理程序下載文件後會話被清除

因此,當我登錄到服務器應用程序時,管理員憑據保存在會話中。

之後,我在另一個瀏覽器中訪問客戶端應用程序。它包含一個下載功能。下載完成後會清除所有會話數據。所以每次下載後,我都需要在管理模塊中重新登錄。

下載處理

   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做下載。因此,我將設置源iframe的下載按鈕被點擊

代碼隱藏文件

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

當但我找不到爲什麼會話此下載後清零。 我在這個SO帖子中發現了類似的問題。 Session expires after file download

但對他而言,它只發生在IE中,但在我的情況下,它發生在所有瀏覽器。

+1

這些代碼行中的任何內容都不會導致您的會話被銷燬。你的文件太大了嗎?導致asp.net進程被回收。 – nunespascal 2012-07-24 05:47:45

+0

@nunespascal:不,它不依賴於文件..它也發生在小文件的情況下.. – 2012-07-24 05:51:00

+0

@nunespascal:我有一個數據庫更新後下載,所以下載後,我更新數據庫中的值同樣的按鈕點擊。我認爲這不會影響任何會話回收循環.. – 2012-07-24 05:54:15

回答