まったく同じ問題が発生しており、ブラウザーの .ASPXAUTH セッション Cookie までたどることができます。その Cookie を削除すると、次の再構築までデータベース エラーがなくなります。
認証されてからプロジェクトを再構築し、次のいずれかのページを参照しようとすると、エラーが定期的に発生します。
- 認証が必要です
- User オブジェクトを呼び出します (例:
@if (User.IsInRole("Administrators"))
)
App_Start/FilterConfig.cs に AuthorizeAttribute フィルターが設定されている場合は、すべてのページでこれを取得します。
これは、最新のパッチ チューズデーの更新後の新しい動作のようです。以前は、ログインしたままでもロール メンバーシップが失われるという奇妙な動作が見られました。最新のパッチの後、悪い .ASPXAUTH Cookie (再構築のため無効) を取得すると、Simple Membership が詰まるようです。
InitializeSimpleMembershipAttribute.cs に正しい接続文字列がありますが、この 1 つのインスタンスでは Simple Membership がデフォルトで別のものに設定されているようです。
Simple Membership データベースを元の (localDb) から本格的な (ローカル) SQL Server インスタンスに移動したことに注意してください。なぜそれが問題になるのかわかりませんが、他のすべての場合にうまく機能します。
アップデート:
また、接続文字列名を EF コンテキスト名 (「ProjectContext」など) と同じにすることも試みましたが、標準の規則にデフォルト設定されているという理論に基づいていますが、違いはありませんでした。すべてのコンテキスト クラス コンストラクターで (: base("connectionString")
構文を使用して) 接続文字列名を明示的に識別しており、Simple Membership はそれ以外の場合に適切な接続文字列を見つけることができます。
更新 2:
この問題は、役割で保護されたページにアクセスするときに再構築後にのみ発生します。シンプル[Authorize]
はそれをトリガーしません。のようなものが必要です[Authorize(Role="Admin")]
。デフォルト (localDb) データベースを使用して、他に変更を加えることなく、これを新しい MVC 4 プロジェクトに複製しました。Cookie をクリアすると、同じユーザーが保護されたコンテンツに問題なくアクセスできます。これは .NET または MVC のコア バグであり、そのように報告する必要があると思います。