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 개의 역할만을 제공하는만큼 큰 것을 시도하는 것을 상상할 수는 없지만, 그것은 저장하려고합니다.
[RolePrincipal을 캐싱하기위한 쿠키 텍스트의 길이는 항상 4096을 초과합니다.] (http://stackoverflow.com/questions/12078210/length-of-caching-roleprincipal- 4096보다 큰 항상입니다.) –