我看到完全相同的問題,並且可以將其跟蹤到瀏覽器中的.ASPXAUTH會話Cookie。刪除該cookie並且數據庫錯誤消失,直到下一次重建。
,如果你進行身份驗證,然後重建項目,並嘗試瀏覽任何網頁,要麼經常出現的錯誤:
- 需要驗證
- 進行通話的用戶對象(例如
@if (User.IsInRole("Administrators"))
)
如果您在App_Start/FilterConfig.cs中設置了AuthorizeAttribute篩選器,則您將在每個頁面上獲得該篩選器。
這似乎是最新補丁星期二更新後的新行爲。以前,我看到奇怪的行爲,我會保持登錄狀態,但我會失去我的會員資格。在最新的補丁之後,當它收到一個錯誤的.ASPXAUTH cookie(由於重建而無效)時,似乎是Simple Membership chokes。
我已經在InitializeSimpleMembershipAttribute.cs中獲得了正確的連接字符串,但它就像是簡單成員關係在這個實例中默認爲其他東西。
請注意,我已將原始(localDb)中的簡單成員資格數據庫移至完整的(本地)SQL Server實例。不知道爲什麼這很重要,並且在所有其他情況下它都能正常工作。
更新:
我還試圖建立連接字符串名稱的理論,它被默認爲標準約定一樣的EF上下文名稱(如「ProjectContext」),但由沒有不同。我在所有上下文類構造函數中明確地標識了連接字符串名稱(使用: base("connectionString")
語法),並且簡單成員資格能夠在其他時間找到正確的連接字符串。
更新2:
訪問受保護頁面時通過角色只出現問題後重建。簡單的[Authorize]
不會觸發它。你需要像[Authorize(Role="Admin")]
這樣的東西。我已經使用默認(localDb)數據庫在沒有其他修改的情況下將其複製到新的MVC 4項目中。清除Cookie,並且同一用戶可以訪問受保護的內容而無任何問題。我相信這是一個核心的.NET或MVC錯誤,需要像這樣報告。
您的上下文在主頁中以某種方式初始化並存儲在會話中? –
不,上下文在每個使用它的控制器中初始化 – Pete