Мы используем пользовательский номер RoleProvider
, чтобы получить наши роли для нашего приложения ASP.NET. Он правильно выполняет роли, но если мы включим опцию cacheRolesInCookie
в нашем файле web.config. Файл cookie не устанавливается после обновления до .NET 4.5. Он по-прежнему работает на нашем сайте в .NET 4.0, но всякий раз, когда мы устанавливаем фреймворк 4.5 (даже если мы все еще нацелены на 4.0 на нашем сайте), cookie не устанавливается.Роль провайдера cookie не устанавливается должным образом
Это то, что мы ожидаем (то, что мы получаем на нашем сайте, когда в 4.0):
Set-Cookie: .CUSTOMROLES=<LOTS OF DATA>; path=/; HttpOnly
И это то, что я получаю после того как я модернизировал свой локальный ящик Дев до 4,5 (после установки VS2012)
Set-Cookie: .CUSTOMROLES=; expires=Tue, 12-Oct-1999 04:00:00 GMT; path=/; HttpOnly
Это параметр в web.config
<roleManager defaultProvider="CustomRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".DELTAROLES" cookieTimeout="75" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" >
Кроме того, мы имеем два различных RoleProviders и проблема возникает с обоими, также, независимо от имени файла cookie, и я пробовал разные значения для других параметров cookie.
И, наконец, функция GetRolesForUser() вызывается дважды, потому что она не кэшируется в cookie правильно. Оба раза он дает правильные роли. Его просто не делает его в печенье
EDIT:
Я сделал некоторые более копать, и я узнал, что, по-видимому есть максимальная длина-куки 4096 (не настраивается) и выход RolePrincipal.ToEncryptedTicket
это 5698. Я не уверен, почему это отличается от того, что было в .NET 4.0, но это другое. Итак, я, по крайней мере, узнал, почему cookie не установлен, хотя я не могу себе представить, почему он пытается быть таким большим, как наш RoleProvider дает только максимум 2 роли, поэтому я не знаю, что еще он пытается сохранить.
Возможный дубликат [Длина файла cookie для кэширования RolePrincipal всегда больше 4096] (http://stackoverflow.com/questions/12078210/length-of-the-cookie-text-for-caching-roleprincipal- is-always-more-than-4096) –