2011-01-15 70 views
0

當我嘗試從通用處理程序(upload.ashx)使用會話獲取上傳的文件名時,沒問題。我也可以在同一頁面上使用webmethod,並且uploadify工程很好,但Session [「fileName」]變爲空。我的代碼有什麼問題嗎?我只需要使用通用處理程序來獲取文件名?從webmethod將(Asp.Net)會話變量(uploadify上傳)傳遞到同一頁面?

[WebMethod(EnableSession = true)]  
    public void LoadPicture(HttpContext context) 
    { 
      try 
     { 
      HttpPostedFile file = context.Request.Files["Filedata"]; 

      context.Session["fileName"] = file.FileName; 

....................一些調整大小並保存圖像編碼.........

  context.Response.Write("1"); 
     } 
     catch (Exception ex) 
     { 
      context.Response.Write("0"); 
     } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 

     using (_modelService = new ModelService()) 
     { 
      ModelEntity _models = new ModelEntity(); 
       ......some codes.... 
      _models.modelphoto = Session["fileName"].ToString(); 
      _modelService.ModelAdd(_models); 
     } 
    } 

回答

0

Uploadify使用Flash。 Flash不發送cookie。在ASP.NET會話中,Cookie被跟蹤。所以,沒有與uploadify會話,對不起。

+0

感謝您的快速回復。但我可以使用通用處理程序(IRequiresSessionState)處理會話。我只是想知道爲什麼我不能像這樣使用webmethod。謝謝 – blackraist

+0

你如何處理通用處理程序的會話?你能顯示你的代碼嗎? –

+0

公共類上載:的IHttpHandler,IRequiresSessionState { 公共無效的ProcessRequest(HttpContext的上下文) { 嘗試 { HttpPostedFile文件= context.Request.Files [ 「Filedata上」]; context.Session [「fileName」] = file.FileName; //它的工作原理 context.Response.Write(「1」); } catch { context.Response.Write(「0」); }} 公共BOOL IsReusable { 得到 { 返回FALSE; } } } – blackraist