페이지 메소드에 대한 호출에 대한 세션 상태가 유지되지 않습니다.

StackOverflow https://stackoverflow.com/questions/1210155

문제

내 서버 사이드 코드 :

    [WebMethod(CacheDuration = 0, EnableSession = true)]
    public static int UserID()
    {
        if (HttpContext.Current.Session["UserID"] == null) return 0;
        int UserID = Convert.ToInt32(HttpContext.Current.Session["UserID"]);
        return (UserID);

    }

내 클라이언트 사이드 코드 :

$.ajax({
    type: "POST", cache: false,
    url: "Login.aspx/UserID",
    data: "{'r':" + rnd() + "}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        alert(msg);
    }
});

이 코드는 내 로컬 호스트에서 잘 작동합니다. "userID"Ajax 호출은 세션 매개 변수의 올바른 값을 반환합니다.

그러나 서버에 내 웹 사이트를 업로드하려고 할 때 "userID"Ajax 호출은 항상 False를 반환합니다 !!

내 서버는 asp.net 2.0이고 jQuery 1.3.2를 사용하고 있습니다.

따라서이 문제를 해결하도록 도와주세요.

도움이 되었습니까?

해결책

이 기사를 읽으십시오 : ASP.NET 세션 상태 FAQ이 질문에서 내 대답을 찾았습니다.

  1. Q : 세션 상태는 일부 웹 서버에서 작동하지만 다른 웹 서버에서는 작동하지 않습니다. A : 아마도 기계 이름 문제 일 수도 있습니다. 보다 http://support.microsoft.com/default.aspx?scid=kb; en-us; Q316112 .
  2. Q : InProc 모드를 사용할 때 세션 변수가 자주 손실되는 이유는 무엇입니까? A : 아마도 응용 프로그램 재활용 때문일 것입니다. 보다 http://support.microsoft.com/default.aspx?scid=kb; en-us; Q316148

SessionState 모드를 "StatesErver"로 변경하면 문제가 해결되었습니다. 아래 코드 사용 :

<sessionState mode="StateServer"
  stateConnectionString="tcpip=localhost:42424"
  cookieless="false"
  timeout="999"/>

다른 팁

확인해야 할 몇 가지 사항 :

WebFarm 구성을 사용하고 있습니까? WebFarm 구성에서 세션을 사용할 때 문제가있을 수 있습니다.

Fiddler 또는 Firebug와 같은 도구를 사용하여 네트워크 트래픽을 확인 했습니까? ASP.NET Auth Cookie가 Ajax 전화 중에 전송됩니까?

세션 VAR을 확인할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top