2012-11-22 29 views
3

我有一個使用MVC4構建的網站,它從數據庫中獲取內容,並且一切正常。SQL網絡接口,錯誤:26只在解決方案重建上

如果我然後重新構建解決方案並嘗試刷新頁面以檢查我的更改,我將始終獲得SQL網絡接口,錯誤:26,說我無法連接到服務器。

但是,如果我然後瀏覽到我的主頁,然後回到頁面,我看着它會正常工作。

有誰知道,因爲它實在是煩人什麼可能導致此問題

編輯

進一步就此我發現它是在重建之後,它無法連接正在加載的AuthorizationContext filterContext到分貝

編輯2

正如下面尼爾我已經發現,I O如果我嘗試訪問已分配角色的頁面,則只能得到該問題

+0

您的上下文在主頁中以某種方式初始化並存儲在會話中? –

+0

不,上下文在每個使用它的控制器中初始化 – Pete

回答

1

我看到完全相同的問題,並且可以將其跟蹤到瀏覽器中的.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錯誤,需要像這樣報告。

+0

我也發現這只是應用角色時的問題,忘記提及它 – Pete

+0

我在http://forums.asp.net/t上發佈了這個錯誤/1861804.aspx/1?SQL+Network+Interfaces+error+26+on+solution+rebuild。我們會看看它是否得到任何關注... –

+0

@NeilLaslett有沒有更新?我有這個相同的問題,無法弄清楚。 –

0

當使用SimpleMembership,這個bug與任何使用發生作用,不只是在控制器,而且當我使用:

如果(Roles.IsUserInRole(角色名){...

我遲到了與這個答案的比賽,但我對我的家庭控制器添加[InitializeSimpleMembership]我認爲固定它。

1

這發生在我身上,而重新構建應用程序,當我在瀏覽器中登錄。

刪除cookies修復了公關對我而言。

相關問題