Membership.GetAllUsers()System.Data.SqlClient.SqlException:用户无权执行此操作

时间:2013-04-10 20:37:00

标签: asp.net-mvc-3 asp.net-membership connection-string visual-web-developer-2010

我使用Visual Web Developer 2010 Express创建了一个小型Web应用程序。在我部署了我的网站并转到第一页(这是提供应用程序用户列表的登录页面)后,我收到此错误:

异常详细信息: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上开发它并测试它在同一台机器上的部署。

1 个答案:

答案 0 :(得分:1)

我发现连接字符串存在问题。它是为用户实例化而设置的,根据此Microsoft article

  

在IIS 7.5上运行且依赖于SQL Server的Web应用程序   Express用户实例化将无法使用默认的IIS 7.5运行   Windows 7客户端和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文件附加到我创建的名为&#34; app_users&#34;的新数据库中。

我不再收到权限错误。