我使用Visual web Developer 2010学习版创建了一个小型web应用程序。在我部署了我的网站并转到第一个页面后,即为应用程序提供用户列表的登录页面,我得到了以下错误:
异常详细信息:系统。数据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>
为什么会出现这种错误?非常感谢您的帮助。我目前正在Windows2008Server上开发它,并在同一台机器上测试它的部署。
我发现连接字符串有问题。它是为用户实例化而设置的,根据这篇微软文章:
运行在IIS 7.5上并依赖SQL Server的Web应用程序Express用户实例化将无法使用默认IIS 7.5运行Windows 7客户端和Windows服务器上的安全配置2008 R2
文章还建议避免在生产中使用用户实例。我发现了这个帖子,它帮助我正常地主持数据库。\SQLExpress实例。我将连接字符串更改为:
<connectionStrings>
<add name="ApplicationServices"
connectionString="Database="app_users";Data Source=.SQLEXPRESS;Initial Catalog=app_users;Integrated Security=SSPI;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
在更改上述连接字符串之前,我将SQLServerExpress中的aspnetdb.mdf文件附加到我创建的名为"app_users"的新数据库中。
我不再获得权限错误。