2013-11-27 2 views
0

HttpContext.Current.Session.IsNewSession을 사용하여 MVC4 응용 프로그램이 시작될 때 표시 할 페이지를 결정합니다.iOS 및 Chrome의 ASP.NET_SessionId 쿠키

이것은 데스크톱, iOS safari에서 잘 작동합니다.

그러나 iOS Chrome에서는 브라우저를 닫을 때마다 (실제로 탭을 닫고 작업 관리자에서 응용 프로그램을 닫을 때마다) 다시 실행하면 IsNewSession은 항상 false입니다.

내 바탕 화면이나 사파리를 닫을 때 새로운 쿠키 값이 있으므로 세션 쿠키 ASP.NET_SessionId를 사용하여 이것을 추측합니다.

그러나 iOS Chrome에서 쿠키를 닫고 다시 실행하면 이전 값을 갖게됩니다. 문제의 근원은 내가 추측합니다.

iOS/Chrome은 세션 쿠키 여야하고 브라우저를 닫을 때 삭제 되더라도 내 ASP.NET_SessionId 쿠키를 지우지 않는 이유는 무엇입니까?

감사합니다.

답변

1

나는 이것이 현대의 많은 모바일 운영체제의 설계 특징 때문이라고 생각한다. 생각해 보면 애플 리케이션이 정말로 닫히지 않는다.

데스크톱 응용 프로그램에서는 screen real estate이 훨씬 많아서 Windows 및 멀티 태스킹을 더 쉽게 관리 할 수 ​​있습니다. 닫는 응용 프로그램은 자연스럽고 필요하다고 느낍니다.

그러나 모바일 응용 프로그램을 사용하면 사용자가 의도하지 않게 응용 프로그램을 열고 전환 할 수있게되어 응용 프로그램을 닫거나 최소화하는 개념이 추상화되어 운영 체제에서 처리됩니다.

이것은 Chrome을 닫을 때 실제로 닫히지 않고 앱을 다시 시작하기 전에 닫히지 않을 수도 있음을 의미합니다. 따라서 세션이 절대로 지워지지 않습니다.

force close 앱을 사용하면 기능이 예상대로 작동합니다.

귀하의 문제에 대해 생각할 수있는 우아한 해결책은 없습니다. 한 가지 아이디어는 사용자의 마지막 활동 시간을 저장하는 것이며, 예를 들어 5 분보다 큰 경우 시작 페이지를 표시 할 수 있습니다.

+0

추가 : 이미 Apple의 지시에 따라 응용 프로그램을 강제 종료 한 경우이 대답은 아무 것도 설명하지 않고 그 대답을 모른다. –

+0

팁 주셔서 감사합니다. 나는 상황을 좀 더 혼란스럽게 만드는 응용 프로그램을 강제 종료하고 있습니다. 마지막 방문 시간은 우리가 함께 할 수있는 일일 수도 있습니다. 나는 그 일을 할 수있는 능력에 맡겨야 할 것입니다. –

관련 문제