2011-05-02 44 views
2

在我的網頁中,我無法在遠程服務器上回發會話變量。會話錯誤:對象未設置爲實例

問題是

如果頁面沒有的IsPostBack那麼我就能夠獲取會話變量。

但是,如果頁面回發則出現錯誤。

當我使用異步文件上傳時出現同樣的錯誤。我使用asynchfileupload來上傳圖像並將其存儲到會話變量中。然後按鈕單擊我將數據保存到目錄。

這個問題引起我上傳任何文件到server.i使用asynchfileupload控件上傳圖像,但它不經常發生。

這裏是我的按鈕點擊

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); 
     } 

     } 

插入值datbase代碼

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); 
     } 
    } 
} 

搜索結果後,我讀到,當任何文件添加到任何子目錄或編輯webconfig將導致應用程序重新啓動。

如果是的話我怎麼能解決這個..

在此先感謝。

+0

嘗試將它作爲隱藏窗體值而不是會話傳遞 - 任何運氣? – 2011-05-02 13:03:32

回答

0

看起來您的會話變量名稱爲「User_id」在回發時正在被刪除。您看到「對象未設置爲對象的實例」,因爲您試圖對空對象執行「ToString()」方法,這是不允許的。

希望這會有所幫助。

+0

是的,你是對的。在這裏我很困惑爲什麼會話變量user_id在回發和頁面刷新時變爲空。但是在poage加載時,如果不是ispostback,那麼我正在獲取會話值。 – 2011-05-02 13:32:21

0

請提供代碼,沒有我們無法猜測的問題。 但是,在使用它之前,您始終可以對會話變量進行空值檢查。

if(Session["User_id"]) != null; 
+0

我已更新我的問題Code.canü檢查它。提前感謝。 – 2011-05-02 13:40:33

0

你必須檢查你sesssion如果null或空,如下所示:

if (Session["User_id"] == null || Session["User_id"].ToString() == string.Empty) 
{ 
    Response.write(Session["User_id"].ToString()); 
} 
else 
{ 
    // your code 
} 
0

檢查遠程計算機上的文件web.config並確保sessionState元素的配置是否正確。您可能在您的遠程服務器上將mode屬性設置爲Off

正如其他人指出的那樣,在訪問存儲在會話中的對象的屬性之前,您可以更加防禦地檢查null

+0

在我的webconfig文件中,會話被指定爲 2011-05-02 13:28:11

+0

您是否可以檢查您是否可以在頁面加載時創建cookie,而不是進行回發,然後嘗試讀取cookie值當頁面被回發?我認爲存儲和檢索ASP.NET使用的會話cookie可能存在問題。您的URL中的主機名是否包含下劃線字符('_')? – dariom 2011-05-04 13:23:07

0

第一次檢查會話。

if (Session["User_id"] == null) 
{ 
//Put code here 

} 
else 
{ 
    Response.Write(Session["User_id"]); 

    // or you can write as below 

    Response.Write(Convert.ToString(Session["User_id"])); 
} 

切勿使用.ToString()方法,你應該使用Convert.ToString,這是處理空值也。

+0

我的疑問是,爲什麼session變量在頁面回發和頁面刷新時變爲空。 – 2011-05-02 13:41:49

0

按鈕點擊事件發生AFTER頁面加載事件...這可能是爲什麼它沒有設置。 ;-)

+0

否會話值也沒有進入其他頁面。 – 2011-05-03 06:42:25

相關問題