문제

jQuery ajax를 사용하는 웹 사이트가 있습니다. 이 jQuery 코드로

$.post("/ajax/getsomedata.aspx", {'id': id }, 
    function(data) 
    {
        dosomething(data);
    }
);

내가 이것을 실행할 때 cookieless = "false", ID 나타납니다 요청 양식. 내가 설정했을 때 cookieless = "true", ID 더 이상 안에 없습니다 요청 양식.

업데이트, 내가 한 일

데이터를 보존하고 자동 리디렉션을 피하기 위해 응답으로 전화를 추가했습니다. 나는 ** diago를 제외하고있다 (그리고 그의 참고 문헌이 무슨 일이 일어나고 있는지에 대해 약간의 삽입을주기 때문에 내 자신의 삭제.

업데이트 된 코드는 다음과 같습니다.

$.post("<%=Response.ApplyAppPathModifier("/ajax/getsomedata.aspx")%>", 
        {'id': id },
    function(data)     
    {        
        dosomething(data);    
    }
);

에 따르면 MSDN response.applyAppPathModifier () Cookieless 세션 상태에있는 경우 세션 ID를 추가하고 변경되지 않은 경우 변경되지 않은 URL을 반환합니다.

세션 ID가 없으므로 ASP.NET은 새 세션을 생성하고 리디렉션을 수행합니다 (따라서 모든 양식 데이터를 제거).

도움이 되었습니까?

해결책

나는 최근에 같은 문제로 어려움을 겪었다. 이것은 Cookieless 세션을 사용하는 네 가지 단점 중 하나입니다. 서버를 치면 요청이 다시 작성되고 요청 변수가 삭제됩니다. ASP.NET을 사용하여 웹 서비스와 게시물 요청을 사용할 때 매우 고통 스러울 수 있습니다. Get을 사용할 때는 잘 작동합니다.

일반 게시물을 사용하여 비슷한 문제가 발생합니다. 기사가 있습니다 여기 그것은 그것이 어떻게 할 수 있는지 설명합니다. 이것 MSDN 기사는 또한 단점에 대해서도 논의합니다.

최상의 솔루션은 서비스를 Seperate Domain 또는 IIS 가상 사이트를 Cookieless 세션을 사용하지 않는 IIS 가상 사이트에 배치하는 것입니다.

Cookieless 세션과 함께 Forms 인증을 사용하는 것도 흥미로운 도전입니다.

다른 팁

나는이 문제를 해결하기 위해 하루 종일 낭비했지만 이것은 빠른 수정 일뿐입니다.

PageMethod 호출, 세션 ID가 요청 URL과 함께 전달되지 않으므로 새로운 session_start 이벤트가 해고되고 있습니다. 전화하기 전에 정확한 요청 경로를 설정하면됩니다. pagemethod, 새로운 세션 시작 이벤트가 해고되지 않도록합니다.

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') {
    //need to pass session id in request path
    PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx');
}
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed);

요청에 세션 토큰을 포함시켜야합니다. ASP.NET은 URL 또는 숨겨진 양식 필드에 추가해야합니다. 그것을 잡고 jQuery 매개 변수 개체를 추가하십시오. 그것은 내가 asp.net에 코딩 된 적이 없다고 말할 수있는 한

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