1

カスタムを使用してRoleProvider、ASP.NET アプリケーションのロールを取得します。cacheRolesInCookieロールを適切に取得していますが、web.config ファイルでオプションを有効にすると. .NET 4.5 にアップグレードした後、Cookie は設定されません。.NET 4.0 のサイトでは引き続き機能しますが、4.5 フレームワークをインストールするたびに (サイトでまだ 4.0 をターゲットにしている場合でも)、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" >

また、2 つの異なる RoleProvider があり、Cookie の名前に関係なく、両方で問題が発生し、他の Cookie オプションに異なる値を試しました。

最後に、Cookie に適切にキャッシュされていないため、GetRolesForUser() 関数が 2 回呼び出されています。どちらの場合も正しい役割を与えます。クッキーに到達していないだけです

編集:

さらに掘り下げたところ、どうやら最大のCookieの長さが4096(構成不可)であり、の出力RolePrincipal.ToEncryptedTicketが5698であることがわかりました。これが.NET 4.0と異なる理由はわかりませんが、違う。したがって、少なくとも、Cookie が設定されていない理由はわかりましたが、RoleProvider が最大 2 つのロールしか与えないため、なぜそれほど大きくしようとしているのか想像できないため、他に何があるかわかりません。保存しようとしています。

4

2 に答える 2

-1

それで、私はこれをもっと調べましたが、どうやら.NET 4.5の単なるバグで、予想よりも大きくなっているようです。Microsoft は、ここで見つけることができるホットフィックスをリリースしました: http://support.microsoft.com/kb/2750147

于 2013-03-14T14:20:38.403 に答える