두 개의 응용 프로그램이 동일한 도메인에서 실행되고 있습니다. 흐름과 같이 진행한다 :관련 ASP.NET 응용 프로그램의 세션을 다른 ASP.NET 응용 프로그램에서 활성 상태로 유지
- 출원 1
- 출원 1 ->애플리케이션 2
- 응용 2 ->출원 1
출원 1 웹폼 (asp.net 프레임 워크 2.0), 응용 프로그램이입니다 ASP.NET MVC 3 (프레임 워크 4.0)
사용자가 2, 나는 응용 프로그램에 세션을 활성 상태를 유지하고 싶습니다 응용 프로그램에있는 동안 1.
응용 프로그램 1를 구축하는 동안, 우리는 단순히 세션 ("KeepSesssionAlive") = DateTime.Now을하는 "KeepSessionAlive.ashx"핸들러에 내장() 요청이있을 경우, this article에 설명 된대로. 이것이 평가 응용 프로그램이기 때문에 테스트를 더 어렵게 만들었으므로 사용자는 대답을 선택하기까지 오랜 시간이 걸릴 수 있습니다. $.post("KeepSessionAlive.ashx", null, function() { });
그래서, 나는 $ 아약스 사용 응용 프로그램이에서 동일한 핸들러를 호출 할 수 있습니다 생각 : 나는 단순히 사용 Application 1
내에서 주기적으로이 핸들러를 호출 jQuery를 다음
Public Class KeepSessionAlive : Implements IHttpHandler, IRequiresSessionState
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Session("KeepSessionAlive") = DateTime.Now
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
: 여기에 코드입니다(), jsonp를 사용하는 방법을 살펴 보았지만 작동하지 않는 것 같습니다. KeepSessionAlive.ashx의 모든 세션 변수를 파일에 기록하는 코드를 작성하고 심지어 jsonp 응답을 통해 물건을 반환하기도하고 데이터가 올바르게 보입니다.
그러나, 응용 프로그램 1에서 전환을하려고 다음 만료 나는 응용 프로그램 1의 세션에 대해 충분히 2 긴 응용 프로그램에서 서성하는 시험을하고 ->응용 프로그램이 때 내가 돌아 가기 페이지에 도달 응용 프로그램 1 나는 세션에서 개체 중 하나를 참조하려고하기 때문에 System.NullReferenceException: Object reference not set to an instance of an object.
오류로 인사합니다. 세션의 유일한 값은 Session ("KeepSessionAlive")입니다. 나는 그것이 새로운 세션을 만들었 기 때문이라고 가정하지만, 그렇다면 왜 세션 값을 기록한 테스트가 모두 의 응용 프로그램 1의 세션 변수를 표시했는지 기록 했습니까? 사용자가 응용 프로그램이의 양식을 작성하는 동안 내가 살아 응용 프로그램 1의 세션을 유지하는 데 사용할 수있는 다른 방법은
이 있습니까?
가 수행을하는 응용 프로그램은 응용 프로그램 풀을 공유하거나 고립입니까? 격리되어있는 경우 각 응용 프로그램에 "KeepSessionAlive.ashx"가 있거나 응용 프로그램 1의 응용 프로그램 하나뿐입니까? –
@Chris Pebble - 격리 된 응용 프로그램 풀에 있습니다 (응용 프로그램 1은 2.0 프레임 워크 응용 프로그램이고 응용 프로그램 2는 4.0 임). 응용 프로그램 1에만 "KeepSessionAlive.ashx"가 있습니다. – JustinP8