2011-05-03 8 views
2

내 웹 페이지에서 세션 변수를 포스트 백 및 페이지 다시 가져 오기에서 가져올 수 없습니다. 페이지가 내가 세션 변수를 얻을 수있어 다음 IsPostBack을하지 않은 경우포스트 백 및 페이지 새로 고침시 세션 값이 null이 됨

문제는

입니다. 하지만 페이지가 다시 게시되면 오류가 나타납니다.

이 오류는 서버에 파일을 업로드 할 때 발생합니다. 이미지를 업로드하고 세션 변수에 저장하려면 asynchfileupload를 사용하고 있습니다. 그리고 나중에 버튼을 클릭하여 디렉토리에 데이터를 저장합니다.

하지만 자주 발생하지는 않습니다. 여기

버튼에

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

이 somuch 내가 어떤 파일을 하위 디렉토리에 추가하거나 webconfig을 편집 할 때까지 응용 프로그램 원인 원인이됩니다 읽었 인터넷 검색 후

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

      } 
///inserting values to datbase. 

을 클릭 내 코드입니다 재시작.

그렇다면 어떻게 해결할 수 있습니까?

미리 감사드립니다.

답변

1

글쎄, 난 그냥 ASP.NET MVC로 테스트했습니다, 그것은 나를 위해 잘 작동합니다. 내가 AddSessionVriable에 갈 때, 그래서

public ActionResult Index() 
    { 
     ViewBag.Message = Session["Sample"];    

     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 

    public ActionResult AddSessionVariable() 
    { 
     Session["Sample"] = "Sample session variable"; 
     return RedirectToAction("Index"); 
    } 

    public ActionResult CreateFile() 
    { 
     var bmp = new Bitmap(100, 100);    
     bmp.Save(Server.MapPath(string.Format(@"\Images\{0}", DateTime.Now.Ticks))); 
     return RedirectToAction("Index"); 
    } 

: 내가 craete 두 가지 작업, 세션 변수를 설정하는 일, 또 다른 파일을 만들기위한, 그래서 난이에 기본 asp.net MVC 응용 프로그램의 홈 컨트롤러를 수정 한이었다 무슨 짓을 그것은 세션에 무언가를 추가하고 인덱스 액션은 세션 변수를 페이지로 렌더링합니다. 볼 수는 있지만 사라지지 않습니다. 그런 다음 파일을 생성하고 세션 변수가 그대로 있으므로 응용 프로그램이 다시 시작되지 않습니다. Web Forms 응용 프로그램이 같은 방식으로 작동하고, 파일을 저장할 때 일부 예외 (예 : 누락 된 사용 권한 때문에)가 발생하여 응용 프로그램이 다시 시작될 수 있습니다.

0

웹 응용 프로그램의 가상 폴더 내에 업로드 된 파일을 저장하지 마십시오.

이렇게하면 보안 위험이 줄어 듭니다. 이제 사람들은 포함 된 코드를 비롯하여 ASP 페이지를 업로드 할 수 있으며 URL을 작성하면 액세스 할 수 있습니다 (이는 단순하지 않을 수도 있음).

+0

감사합니다. sehe ....이 웹 사이트는 사용자가 이미지, 오디오, video.so를 업로드하는 웹 사이트 광고로서 virtuul 디렉토리가 아닌 다른 파일에 액세스 할 수 있습니다. (파일 확장명을 확인하고 있습니다. 저장하기 전에 uloaded 파일); –

관련 문제