1

我使用Visual Web Developer 2010 Express創建了一個小型Web應用程序。在我部署了我的網站並轉到第一頁,即提供應用程序用戶列表的登錄頁面後,出現此錯誤:Membership.GetAllUsers()System.Data.SqlClient.SqlException:用戶沒有執行此操作的權限

異常詳細信息:System.Data.SqlClient.SqlException:用戶沒有有權執行此操作。

源錯誤:

Line 22:   public ActionResult LogOn() 
Line 23:   { 
Line 24:    var users = Membership.GetAllUsers().Cast<MembershipUser>().ToList(); 
Line 25:    SelectList usernames = new SelectList(users); 
Line 26:    ViewBag.UserNames = usernames; 

這裏是我的ConnectionStrings設置:

<connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

爲什麼發生這個錯誤?任何幫助深表感謝。我目前正在Windows 2008 Server上開發它,並在同一臺機器上測試它的部署。

+0

這聽起來像您的連接字符串指定的用戶沒有權限從users表中進行選擇。 – 2013-04-10 20:38:13

+0

@JeremyHolovacs我正在開發和測試同一臺機器上的部署。當我在Visual Web Developer中調試它時,它工作正常。我需要用SQL Server Express來獲得許可才能工作? – massaskillz 2013-04-10 20:54:39

+0

您使用SSPI(可信連接)嗎?我將在您的應用程序服務數據庫上創建一個具有讀/寫訪問權限的Sql User帳戶,並在連接字符串中使用該憑證。 – 2013-04-10 20:56:13

回答

1

我發現我的連接字符串的問題。它的成立,爲用戶實例化,而根據這個微軟article

Web applications running on IIS 7.5 and that rely on SQL Server Express user instancing will fail to run using the default IIS 7.5 security configuration on both Windows 7 Client and Windows Server 2008 R2

文章還建議避免在生產用戶實例的使用。我發現這個post幫助我在正常的。\ SQLExpress實例中託管數據庫。我改變了我的連接字符串:

<connectionStrings> 
    <add name="ApplicationServices" 
    connectionString="Database="app_users";Data Source=.\SQLEXPRESS;Initial Catalog=app_users;Integrated Security=SSPI;" 
    providerName="System.Data.SqlClient"/> 
</connectionStrings> 

改變上述連接字符串之前,我附着在SQL Server Express的ASPNETDB.MDF文件到一個新的數據庫中,我創建一個名爲「APP_USERS」。

我不再收到權限錯誤。

+0

我正面臨同樣的問題。然後,我只是在我的連接字符串中刪除'User Instance = true'。喔,工作就像一個魅力。謝謝你的提示。 +1 – Han 2013-11-29 07:53:38

相關問題