2013-03-01 3 views
1

ASP.NET 응용 프로그램에 대한 역할을 수행하기 위해 사용자 지정 RoleProvider을 사용합니다. 역할을 제대로 얻고 있지만 web.config 파일에서 cacheRolesInCookie 옵션을 사용하도록 설정 한 경우 .NET 4.5로 업그레이드 한 후에 쿠키가 설정되지 않습니다. 여전히 .NET 4.0에서 우리 사이트에서 작동하지만 4.5 프레임 워크를 설치할 때마다 (우리 사이트에서 여전히 4.0을 목표로하더라도) 쿠키는 설정되지 않습니다. 역할 공급자 쿠키가 제대로 설정되지 않았습니다.

우리가 (우리가 때 4.0 저희 사이트에서 무엇을 얻을) 기대하는 것입니다 :

Set-Cookie: .CUSTOMROLES=<LOTS OF DATA>; path=/; HttpOnly 

그리고 이것은 내가 4.5에 내 로컬 dev에 상자를 업그레이드 한 후 나는 (VS2012를 설치 한 후) 무엇을 얻을

Set-Cookie: .CUSTOMROLES=; expires=Tue, 12-Oct-1999 04:00:00 GMT; path=/; HttpOnly 

이 우리가 두 개의 서로 다른 RoleProviders을 가지고

<roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".DELTAROLES" cookieTimeout="75" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" > 

또한의 web.config의 설정입니다 문제는 쿠키의 이름과 관계없이 두 쿠키 모두에서 발생하며 다른 쿠키 옵션에 대해 다른 값을 시도했습니다.

마지막으로 GetRolesForUser() 함수는 쿠키에 제대로 캐시되지 않기 때문에 두 번 호출됩니다. 두 번 모두 올바른 역할을합니다. 그것은 쿠키에 그것을 만들기하지

편집 :

내가했던 좀 더 파고 난 분명히 4096의 최대 - 쿠키 길이 (비 구성) 및 RolePrincipal.ToEncryptedTicket의 출력이 있다는 것을 발견 5698입니다. 왜 이것이 .NET 4.0과 다른지 확실하지 않지만 다른 점이 있습니다. 그래서, 적어도 왜 쿠키가 설정되지 않았는지 알았지 만, 우리 RoleProvider가 최대 2 개의 역할만을 제공하는만큼 큰 것을 시도하는 것을 상상할 수는 없지만, 그것은 저장하려고합니다.

+0

[RolePrincipal을 캐싱하기위한 쿠키 텍스트의 길이는 항상 4096을 초과합니다.] (http://stackoverflow.com/questions/12078210/length-of-caching-roleprincipal- 4096보다 큰 항상입니다.) –

답변

-1

그래서이 점을 보니 .NET 4.5의 버그가 예상보다 커졌습니다. Microsoft는 여기에서 찾을 수있는 핫픽스를 출시했습니다. http://support.microsoft.com/kb/2750147

+0

핫픽스를 더 이상 사용할 수 없습니다. 방금 my 프로젝트를 .net 4에서 4.5로 업그레이드하고 같은 문제가 발생했습니다. 어떤 아이디어? 여전히 파일이 있습니까? 감사 –

0

.NET 4.5로 업그레이드 한 후에도 동일한 문제가 발생했습니다. 나는 쿠키의 길이를 검사했고 그것은 4096을 넘지 않아서 그 이유가 없다. 쿠키를 저장하지 않는 이유를 알 수 있지만 직접 저장할 수 있습니다. this answer의 샘플 코드를 참조하십시오.

관련 문제