我使用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上开发它并测试它在同一台机器上的部署。
答案 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;的新数据库中。
我不再收到权限错误。