2012-12-26 3 views
0

세션이 나 빠지면서 좌절하고 있습니다. 내가 저장 버튼을 클릭하면
난 뒤에 코드에서 DB에 데이터를 저장하고이 경우 성공적으로 나는 구문을 사용하여 메인 프로젝트 페이지로 사용자를 리디렉션하고있다 :응답 리디렉션은 글로벌 asax에서 session_end를 만듭니다.

Response.Redirect("~/Admin/Projects.aspx?i=esc&prjName=abc",'false'); 

을하지만 내 세션 널 (null)을합니다.
Globex.asax 페이지로 이동하면 ang은 Session_End을 실행하고 모든 세션을 null로 만듭니다.

나는 심지어 Server.Transfer을 시도했지만 브라우저 URL은 동일하게 유지되며 클라이언트는 this.Even을 원하지 않습니다. 일부는 내가 읽은 곳 중 Server.Execute도 리디렉션에 사용되지만 일부 잘못된 결과가 표시됩니다.

이 세션을 사용하지 않고 Response.Redirect을 사용할 수 있습니까?

(이 페이지에서 좀 긴 설명을 저장하는 텍스트 파일을 생성하고이 성공하면 그때는 다른 페이지로 리디렉션하고 있습니다.)

이 업데이트 :: 여기

내입니다 버튼에 대한 코드는 다음 페이지로 리디렉션하기 전에 또한 버튼 클릭 이벤트에서 기존 세션 값을 할당

protected void lnkbtnAddDescription_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if ((!hidProjId.Value.ToString().Equals("") || !hidEditProjId.Value.ToString().Equals("")) && !txtDescription.Value.ToString().Equals("")) 
       { 
        //ProjectDescription 
        int projId = 0; 
        if (!hidIsEdit.Value.ToString().Equals("")) 
        { 
         projId = Convert.ToInt32(hidEditProjId.Value.ToString()); 
        } 
        else 
        { 
         projId = Convert.ToInt32(hidProjId.Value.ToString()); 
        } 

        ProjectM proj = new ProjectM(); 
        proj.LoadByKey(projId); 

        string prj = proj.ProjectName.ToString().Replace(" ", "-"); 

        string strDirectoryPath = Server.MapPath("~/ProjectDescription/") + proj.ProjectId + "-" + prj; 
        if (!Directory.Exists(strDirectoryPath)) 
        { 
         Directory.CreateDirectory(strDirectoryPath); 

         string filePath = strDirectoryPath + "/" + proj.ProjectId + "-" + prj + ".txt"; 
         string strDescription = txtDescription.Value.ToString().Replace("<br />", "<p>"); 
         createTextFile(filePath, strDescription); 

         string dbDirectoryPath = "~/ProjectDescription/" + proj.ProjectId + "-" + prj + "/" + proj.ProjectId + "-" + prj + ".txt"; 
         proj.Description = dbDirectoryPath.ToString(); 
         proj.IsNew = false; 
         proj.Save(); 

         if (!hidIsEdit.Value.ToString().Equals("")) 
         { 
          //Server.Execute("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString() + "",false); 
          Session["dsProj"] = null; 
          Session["editProjId"] = null; 
          Session["fname"] = hidFname.Value.ToString(); 
          Session["UserId"] = hidUserId.Value.ToString(); 
          Session["role"] = hidRole.Value.ToString(); 
          Response.Redirect("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString()); 
         } 
         else 
         { 
          //Server.Execute("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString() + "",false); 
          Session["dsProj"] = null; 
          Session["editProjId"] = null; 
          Session["fname"] = hidFname.Value.ToString(); 
          Session["UserId"] = hidUserId.Value.ToString(); 
          Session["role"] = hidRole.Value.ToString(); 
          Response.Redirect("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString()); 
         } 

        } 
        else 
        { 
         Directory.Delete(strDirectoryPath, true); 
         Directory.CreateDirectory(strDirectoryPath); 

         string fileName = proj.ProjectName.ToString().Replace(" ", "-"); 

         string filePath = strDirectoryPath + "/" + proj.ProjectId + "-" + fileName + ".txt"; 
         string strDescription = txtDescription.Value.ToString().Replace("<br>", "<p>"); 
         createTextFile(filePath, strDescription); 

         string dbDirectoryPath = "~/ProjectDescription/" + proj.ProjectId + "-" + proj.ProjectName.ToString() + "/" + proj.ProjectId + "-" + proj.ProjectName.ToString() + ".txt"; 
         proj.Description = dbDirectoryPath.ToString(); 
         proj.IsNew = false; 
         proj.Save(); 

         if (!hidIsEdit.Value.ToString().Equals("")) 
         { 
          //Server.Execute("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString() + "", false); 
          Session["dsProj"] = null; 
          Session["editProjId"] = null; 
          Session["fname"] = hidFname.Value.ToString(); 
          Session["UserId"] = hidUserId.Value.ToString(); 
          Session["role"] = hidRole.Value.ToString(); 
          Response.Redirect("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString()); 
         } 
         else 
         { 
          //Server.Execute("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString() + "", false); 
          Session["dsProj"] = null; 
          Session["editProjId"] = null; 
          Session["fname"] = hidFname.Value.ToString(); 
          Session["UserId"] = hidUserId.Value.ToString(); 
          Session["role"] = hidRole.Value.ToString(); 
          Response.Redirect("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString()); 
         } 
        } 
       } 
      } 
      catch (Exception) 
      { 

      } 
     } 

     private void createTextFile(string filePath, string strDescription) 
     { 
      try 
      { 
       StreamWriter w = File.CreateText(filePath); 
       w.WriteLine(strDescription); 
       w.Flush(); 
       w.Close(); 
      } 
      catch (Exception ex) 
      { 

      } 
     } 
+0

나는 오류가 Response.Redirect를 때문입니다하지 일을 –

+0

당신이 하나에 두 번째 인수를두고있는 다른 문제가있는 것입니다 인용 부호??? –

+0

오, 아니 내 실수를 올바른 대답은 :'Response.Redirect ("~/Admin/Projects.aspx? i = esc & prjName = abc", false);' –

답변

0

을 클릭합니다.

이렇게하면 문제가 해결됩니다. 이 당신에게 도움이 될 것입니다

+0

답장을 보내 주셔서 감사합니다. [ "id"] = 세션 [ "id"]'리디렉션 전에 해결 되나요 ?? –

+0

아니오, 세션 [id] = object 여야합니다 (배치 할 값을 지정하십시오) – MahaSwetha

+0

나는 이것을 수행했지만 테스트했지만 동일한 오류가 발생했습니다. 그러면 코드를 확인할 수 있습니다. –

0

희망, ASP.NET Session becomes null after postback on local

이 문제가 nulling 세션입니다 허가 거부의 일종, 관련이있다 생각합니다.

+0

그리고 그걸 처리하거나 설정해야합니까? Plz 날 안내. –

+0

버튼 이벤트 코드를 좀 더 넣으시겠습니까 ?? –

+0

, 업데이트 된 질문을 확인하십시오. –

0

텍스트 파일을 만들거나 저장하는 데 문제가 있어야합니다. 이 값은 Session_End 호출로 인해 모든 값이 null이 될 수 있습니다.

+0

그러나 텍스트 파일 저장 또는 작성 방법 세션에 영향을 줍니까? 이것은 단지 지식 일뿐입니다. –

+0

가끔 응용 프로그램에서 내부 오류가 발생하면 session_end가 호출됩니다.어쩌면 당신은 응용 프로그램을 던지고 오류가있는 파일을 만들거나 저장할 수있는 권한이 없습니다. 파일이 성공적으로 작성/저장되었는지 확인하십시오. 그렇다면 문제가되는 다른 이유가있을 수 있습니다. –

-1

폴더, 삭제, 이동 원인을 세션의 끝과 긴 새로 고침 이름을 바꿀 수는

http://www.telerik.com/community/forums/aspnet-ajax/file-explorer/folder-delete-move-rename-causes-session-end-and-long-refresh.aspx#1365780

+2

[링크 전용 답변] (http://meta.stackoverflow.com/tags/link-only-answers/info)은 권장하지 않으므로 SO 답변은 솔루션 검색의 종점이어야합니다. 시간이 지남에 따라 부실 해지는 경향이있는 참조의 또 다른 중간 기착). 링크를 참조 용으로 유지하면서 독립형 시놉시스를 여기에 추가하는 것을 고려해보십시오. – kleopatra