(자세한 상황은 아래의 질문을 참조하십시오) :<machineKey decryptionKey = "자동 생성"... IIS에서 무시됩니다. 이전 세션의 쿠키를 무효화하지 않습니다
은 Web.config의에서
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"/>
이 앱에 새로운 machineKey을 자동 생성하는 데 실패하는 어떤 상황에 있는가를 수영장 재활용? 이것은 내가 MVC 애플리케이션에 표준 ASP.NET있는 FormsAuthentication를 사용하고 있는데 제가 보는 행동 ...
입니다. FormsAuthentication.GetAuthCookie
을 사용하여 사용자를 로그인하고 브라우저의 세션을 사용하여 영구적 인 쿠키를 사용하지 않으면 IIS 응용 프로그램 풀 재활용을 통해이 쿠키에 대한 세션의 지식이 무효화됩니다. 영구 쿠키가없는 모든 사용자를 로그 아웃하십시오.
이것은 IIS 설치 (XP) 중 하나에서 발생하지만 다른 IIS 구성 (Server 2K3)에서는 FormsAuthentication 쿠키 (표준 이름 ".ASPXAUTH")가 유효한 상태로 계속 사용자를 인증합니다.
왜 이런 일이 발생했는지 또는 어떤 구성이이 동작을 제어하는지 알 수 있습니까?
명백히 앱 풀을 재활용하면 브라우저가 .ASPXAUTH 쿠키를 보내고 있는지 여부를 제어 할 수 없습니다 (브라우저를 닫지 않고 쿠키가 만료되지 않은 경우). 는 IIS의 경우 나는 Application_BeginRequest
이벤트 기간 동안 Request.Cookies
에서 들어오는 쿠키를 볼 수있는, 즉 제대로 재활용 후 인증을 거부 설치에
...하지만 Global.asax.cs에서 사용할 수있는 다음 이벤트로 제어 이동 한 번
(Application_AuthenticateRequest
), 쿠키는 Request.Cookies
컬렉션에서 삭제되었습니다.
IIS/ASP.NET 구성 모두에 이러한 문제가 발생하지 않는 이유는 무엇입니까? 이 질문을 형성하는 간단한 방법 명확하지 않다 경우
이다 : 나는 Application_BeginRequest
에서 Application_AuthenticateRequest
로, 단일 요청으로, 단계 때
왜 {System.Web.HttpCookie}
에서 HttpContext.Current.Request.Cookies[".ASPXAUTH"]
변화가 null로 하는가?
더 많은 디버깅 정보 :
나는 내가 전에 요청 동안 다음 Global.asax.cs의 FormsAuthentication_OnAuthenticate 이벤트에 다음 코드 ...
var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie != null)
{
var val = cookie.Value;
try
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(val);
}
catch (Exception)
{
}
}
을 ... 연결하는 경우 IIS 응용 프로그램 풀을 재활용하면 아무런 예외도 발생하지 않습니다. IIS 응용 프로그램 풀 재활용 후 브라우저에서 똑같은 .ASPXAUTH 쿠키가 전송되면 암호화 예외가 발생합니다 ("채우기가 유효하지 않으므로 제거 할 수 없습니다.").
왜 그런가요?
하나는 ASP를 사용하도록 구성되어 있습니까?inproc 대신 세션을 저장하는 NET State Service? – devstuff
좋은 생각 - 아니, 둘 다 InProc을 사용하고 있습니다. 불행히도. – kamens