2011-01-15 5 views
0

제가 세션을 사용하여 제네릭 처리기 (upload.ashx)에서 파일 이름을 업로드하려고 할 때 문제가 없습니다. 나는 또한 samepage에 webmethod를 사용할 수 있으며 업로드 작업은 훌륭하지만 Session [ "fileName"]이 null이됩니다. 내 코드에 문제가 있습니까? 파일명을 얻기 위해 제네릭 처리기 만 사용해야합니까? Passing (Asp.Net) webmethod에서 동일한 페이지로 (업로드로 업로드 한) 세션 변수?

[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 플래시를 사용합니다. 플래시는 쿠키를 보내지 않습니다. ASP.NET 세션에서 쿠키에 의해 추적됩니다. 따라서 업로드 할 수있는 세션이 없습니다. 죄송합니다.

+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"); } } 공공 부울 IsReusable { 거짓 { 수익을 얻을; } } } – blackraist