페이지 메소드에 대한 호출에 대한 세션 상태가 유지되지 않습니다.
-
06-07-2019 - |
문제
내 서버 사이드 코드 :
[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이 질문에서 내 대답을 찾았습니다.
- Q : 세션 상태는 일부 웹 서버에서 작동하지만 다른 웹 서버에서는 작동하지 않습니다. A : 아마도 기계 이름 문제 일 수도 있습니다. 보다 http://support.microsoft.com/default.aspx?scid=kb; en-us; Q316112 .
- 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을 확인할 수 있습니까?
제휴하지 않습니다 StackOverflow