2011-09-30 4 views
0

페이지를 방문 할 때 세션 상태에 값을 저장하고 있습니다. 브라우저를 다시 클릭하면 세션의 값이 원래 값으로 되돌아갑니다. 왜 이런 일이 생길까요? 나는 돌아갈 때 값을 재설정하지 않을 것이다.세션 상태 문제

iPhone 및 iPad에서 발생합니다. 다른 모든 브라우저는 세션 상태 값을 롤백하지 않습니다.

미리 감사드립니다.

function pageLoad() { 
    // Get the current url path 
    var url = document.URL; 

    PageMethods.IsNavigatingBackward(url, handleCallback); 
} 

function handleCallback(isBackward) { 
    if (isBackward) { 
     // Go back to previous page 
     history.back(); 
    } 
    else { 
     // Set the current url in the session 
     var url = document.URL; 

     PageMethods.SetCurrentPage(url, getLocation); 
    } 
} 

그리고 뒤에있는 코드 : :이 자바 스크립트 코드를 사용하고

(두 페이지의 코드는 동일)

[WebMethod] 
public static bool IsNavigatingBackward(Uri url) 
{ 
    string currentPath = url.LocalPath; 
    string lastPath = (string)HttpContext.Current.Session["LastPage"]; 
    bool isBackward = false; 

    NavigationList table = NavigationList.GetInstance(); 

    if (table.IsBackwardNavigation(currentPath, lastPath)) 
    { 
     isBackward = true; 
    } 

    return isBackward; 
} 

[WebMethod] 
public static void SetCurrentPage(Uri url) 
{ 
    HttpContext.Current.Session["LastPage"] = url.LocalPath; 
} 
+0

이 우리에게 코드를 제공, 당신은 변수가 viewstate가에 저장되지 않습니다 확신? – Peter

+0

joek1975

답변

0

난 당신이 무슨 일이 일어나고 있는지 오해 생각합니다. 페이지가 다시 다운로드되지 않을 가능성이 높습니다 (따라서 세션이 실제로 아무것도 설정되지 않았습니다). 이전에 캐시 된 다운로드 페이지 만 사용하고 있습니다.

  • 수락 쿠키

당신에게 캐시 된 원본 페이지를 표시하지 둘 경우 이러한 사실 및 가정은 다음과 같습니다 브라우저 인 경우

+0

이 경우 메소드는 javascript onLoad - PageMethods.SetCurrentPage (url);에서 호출 된 정적 함수입니다. 나는 진술에 중단 점을 설정하고이를 통해 단계를 밟을 수 있었다. – joek1975

+0

이것은 중요한 정보이며 문제의 문맥을 완전히 바꿉니다. 이제 정적 문제를 다루고 있습니다. 코드를 보지 않으면 우리는 당신을 도울 수 없습니다. –

+0

코드가 첨부되어 있습니다. – joek1975

1

당신은 새로운 세션 상태 값이 표시됩니다 두 번째 페이지로드에서 값을 되돌릴 수 없으면 세션 상태가 표시됩니다.

iPhone 및 iPad는 이러한 작업을 수행하지 않는 것으로 보입니다.

+0

돌아갈 때 페이지를 다시로드하려면 어떻게해야합니까? – joek1975

+0

할 수는 없지만 [캐시하지 않도록 브라우저에 요청] (http://msdn.microsoft.com/en-us/library/w9s3a17d (v = VS.100) .aspx)하면 강제로 수행됩니다. 매번 다시로드하십시오. –

+0

예를 들려 줄 수 있습니까? – joek1975

0

당신이 대신 다음 사용해 볼 수 있습니다 :

[WebMethod(EnableSession = true)]