2012-01-30 37 views
1

我正在使用uploadify上傳音頻文件。它使用處理程序upload.ashx將文件上載到服務器。我想在我的aspx頁面中獲取文件路徑。所以我試圖在處理程序中設置會話,以便我在aspx中獲得文件路徑,但我無法這樣做。我怎樣才能得到文件的路徑從處理器價值.aspx頁面中如何在asp.net中的Handler中設置會話值

public class Upload : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     string savepath = context.Server.MapPath(tempPath); 
     context.Session["AudioFile"] = savepath; 

    } } 

Nullreference拋出的異常:對象引用不設置到對象的實例。

回答

6

IRequiresSessionState Interface添加到您的處理程序定義中。或者如果您只需要只讀信息,則可以通過避免鎖定並寫回會話值來提高性能。

它只是一個標記接口,告訴運行時,此處理程序需要會話狀態。

public class Upload : IHttpHandler, IRequiresSessionState{ 
    //... 
} 
+0

現在我能夠在處理程序設置會話值,但在aspx頁面會話值始終爲空,爲什麼它爲空 – Murthy 2012-01-30 14:08:49

+0

處理程序中的會話ID與我在aspx頁面中獲得的ID不同。問題是 – Murthy 2012-01-30 14:15:00

+0

如果您從不同的瀏覽器發送請求,您將獲得不同的會話,並因此獲得不同的會話ID。或者只需重新啓動Web服務器,並從不同的選項卡請求頁面或處理程序。可能這是你的問題。 – 2012-01-30 14:56:14

0

添加接口IRequiresSessionState到你的方法 像 公共類上傳:IHttpHandler的,IRequiresSessionState {

}

+0

你能解釋一下通過@AkosLukacs的答案的增強嗎? – bummi 2014-10-22 07:36:40