1

我使用 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 上开发它并在同一台机器上测试它的部署。

4

1 回答 1

1

我发现我的连接字符串有问题。它是为用户实例化而设置的,根据这篇 Microsoft文章

在 IIS 7.5 上运行且依赖于 SQL Server Express 用户实例化的 Web 应用程序将无法在 Windows 7 客户端和 Windows Server 2008 R2 上使用默认的 IIS 7.5 安全配置运行

本文还建议避免在生产中使用用户实例。我发现这篇文章帮助我将数据库托管在一个普通的 .\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”的新数据库中。

我不再收到权限错误。

于 2013-04-12T20:50:49.890 回答