>백엔드 개발 >C#.Net 튜토리얼 >ASP.NET에서는 사용자가 로그인되어 있고 IE10에서 세션이 손실되었는지 확인할 수 없습니다.

ASP.NET에서는 사용자가 로그인되어 있고 IE10에서 세션이 손실되었는지 확인할 수 없습니다.

高洛峰
高洛峰원래의
2017-01-07 09:54:361374검색

오늘 IE10에서 회사 웹사이트에 로그인한 후 다른 메뉴를 클릭하면 항상 자동으로 로그인 페이지로 빠져나가는 현상을 확인해보니 HTTP 헤더에는 문제가 없는 것으로 확인되었습니다. 및 .AUTH 쿠키는 IE10에서 전송되지만 양식 인증 메커니즘(FormsAuthentication)을 사용하면 사용자가 로그인했는지 확인할 수 없으며 저장된 세션이 항상 손실됩니다.

이후 이것이 버그인 것으로 확인되었습니다. ASP.NET 2.0, 3.5, 4.0에서는 IE10 -Agent 헤더 문자열의 사용자를 인식할 수 없기 때문에 사용자의 브라우저 버전을 식별할 수 없어 ASP.NET의 특정 기능이 작동하지 않는 문제가 발생합니다. 브라우저가 쿠키 기능을 지원하지 않고 쿠키 관련 코드 등을 처리하지 않아 브라우저에 오류가 발생한다고 믿었습니다. 서버에서 반환된 세션 ID가 저장되지 않아 손실이 발생하는 등이 있습니다.

이 문제는 Microsoft에서 공식적으로 확인했으며 IE10의 버그입니다. 이 문제를 해결하기 위해 특별히 두 가지 HOTFIX도 릴리스되었습니다. 동일한 문제가 발생하면 다음 지침을 참조하세요.
KB2600088: 핫픽스 Microsoft.NET Framework 4.0의 ASP.NET에 적용됩니다. [영어]
KB2608565: 핫픽스는 .NET Framework 3.5.1의 ASP.NET에 적용됩니다. [ 영어]
KB2600100: 핫픽스는 .NET Framework 3.5.1의 ASP.NET에 적용됩니다. .NET Framework 3.5 SP1 및 .NET Framework 2.0 SP2 [English]
간단한 해결 방법은 웹 사이트의 루트 디렉터리에 브라우저 정의 파일(브라우저 정의 파일)을 추가하는 것입니다.

단계는 다음과 같습니다. :
1. "App_Browsers" 폴더를 추가합니다.
2. IE10.browser와 같이 "*.browser" 접미사가 있는 파일을 추가합니다.
3. 다음과 같이 파일 콘텐츠를 추가합니다.

<browsers> 
<browser refID="Default"> 
<capabilities><!-- To avoid wrong detections of e.g. IE10 --> 
<capability name="cookies" value="true" /> 
<capability name="ecmascriptversion" value="3.0" /> 
</capabilities> 
</browser> 
</browsers>


ASP.NET에서 사용자가 로그인했는지 확인할 수 없고 IE10에서 세션이 끊어지는 문제를 해결하는 방법에 대한 관련 기사를 더 보려면 다음을 참조하세요. PHP 중국어 넷!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.