2011-05-03 110 views
2

在我的網頁中,我無法在回發和頁面刷新時獲取會話變量。在回發和頁面刷新時會話值變爲空

問題是

如果頁面沒有的IsPostBack那麼我就能夠獲取會話變量。 但是,如果頁面回發,然後出現錯誤。

這個錯誤是當我上傳任何文件到server.I使用asynchfileupload上傳圖像並將其存儲到會話變量。然後按鈕單擊我將數據保存到目錄。

但它不經常發生。

這裏是我的代碼

protected void AsynImageLoader_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
    { 
     if (AsynImageLoader.PostedFile != null) 
     { 
      string extension = System.IO.Path.GetExtension(AsynImageLoader.PostedFile.FileName); 

      if (extension == ".jpg" || extension == ".gif" || extension == ".jpeg" || extension == ".png") 
      { 
       HttpPostedFile file = AsynImageLoader.PostedFile; 
       Session["TempImage"] = ReadFile(file); 
      } 
     } 
    } 

按鈕點擊

 var storedImage = Session["TempImage"] as byte[]; 
     String Strthumbpath = Server.MapPath("content\\thumbnail\\"); 
     if (storedImage != null) 
     { 
      System.Drawing.Image image = GetImage(storedImage); 

      if (image != null) 
      { 
      image.Save(Strthumbpath + strFileName); 
      } 

      } 
///inserting values to datbase. 

後somuch谷歌上搜索我讀到,當任何文件被添加到任何子目錄或編輯webconfig會引起導致應用程序重新開始。

如果是這樣,我該如何解決這個問題..

在此先感謝。

回答

1

嗯,我剛剛用ASP.NET MVC進行了測試,它對我來說工作正常。 我所做的就是了解創建兩個動作,一個用於設置會話變量,另一個用於創建文件,所以我修改默認asp.net MVC應用程序家居控制器,以這樣的:

public ActionResult Index() 
    { 
     ViewBag.Message = Session["Sample"];    

     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 

    public ActionResult AddSessionVariable() 
    { 
     Session["Sample"] = "Sample session variable"; 
     return RedirectToAction("Index"); 
    } 

    public ActionResult CreateFile() 
    { 
     var bmp = new Bitmap(100, 100);    
     bmp.Save(Server.MapPath(string.Format(@"\Images\{0}", DateTime.Now.Ticks))); 
     return RedirectToAction("Index"); 
    } 

所以,當我去AddSessionVriable ,它爲會話和索引動作增加了一些內容,將會話變量渲染爲頁面,我可以看到它並未消失。然後我去創建文件,我的會話變量仍然存在,這樣就不會重新啓動應用程序。我很確定,Web窗體應用程序的工作方式相同,可能是因爲在保存文件時丟失了一些異常(例如由於缺少權限)並重新啓動應用程序。

0

不要將上傳的文件保存在Web應用程序的虛擬文件夾中。

這也降低了安全風險(現在,人們可能會上傳一個asp頁面,包括嵌入的代碼,並訪問它,如果他們能夠製造URL(這可能很簡單))。

+0

謝謝sehe ....這個網站是用於廣告的網站,用戶上傳圖片,音頻,video.so,我可以保存files.and訪問該文件以外的virtaul目錄。(我正在檢查文件擴展名保存前未加載文件); – 2011-05-03 08:07:13