ASP.NET ASPNETDB.MDF无法打开数据库

ASP.NET ASPNETDB.MDF无法打开数据库,asp.net,sql-server,web-config,sqlconnection,Asp.net,Sql Server,Web Config,Sqlconnection,我正在使用membership类进行用户管理,它创建了一个名为ASPNETDB.MDF的数据库。。我决定使用同一个数据库来处理我的其他数据,所以我在其中添加了一些我自己的表 当我尝试访问它时: <connectionStrings> <add name="connString" connectionString="Initial Catalog=MyProject;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\User

我正在使用membership类进行用户管理,它创建了一个名为ASPNETDB.MDF的数据库。。我决定使用同一个数据库来处理我的其他数据,所以我在其中添加了一些我自己的表

当我尝试访问它时:

    <connectionStrings>
    <add name="connString" connectionString="Initial Catalog=MyProject;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\MyName\Documents\Visual Studio 2008\Projects\Project\MyProject\App_Data\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
在我通过会员资格类登录后,它会出现以下错误:

    Cannot open database "MyProject" requested by the login. The login failed.
Login failed for user 'My-PC\Myuser'.
我不知道发生了什么事


编辑:如果我不使用成员类,我可以很好地使用数据库。。但是当我使用membership类登录后,它会停止工作。

您可能需要确保web服务器运行的用户对db文件和目录具有读/写权限。

确保我的Pc\MyUser对“MyProject”数据库具有适当的访问权限。对于本地项目运行的测试环境,我通常将自己指定为要访问的数据库的数据库所有者。如果我是唯一访问它的用户。您可以通过运行EXEC sp_changedbowner“My Pc\MyUser”来执行此操作。显然,您希望为您的生产环境指定一个访问权限有限的单独帐户。

尝试从web.config中删除“connString”,改用“LocalSqlServer”连接字符串(它在machine.config中定义):


我也遇到了这个问题,我注意到,如上文所述,如果我将数据库的所有者更改为“My Pc\MyUser”(通过EXEC sp\u changedbowner“My Pc\MyUser”),它确实可以工作

您也可以尝试在数据库上运行此操作:

exec sp_grantlogin 'My-PC\MyUser2'
如果您希望MyUser和MyUser2能够访问您的数据库,这当然很有用。当我必须使用MyUser2凭据执行aspnet_regsql.exe时,我遇到了这种情况(因为我的数据库的所有者是aspnet,它没有登录/运行方式功能)


希望这对某人有所帮助:)

用户对db文件和目录都有读/写权限。。。如果我不使用membership类并尝试访问数据库,它工作得很好…web.config的部分是什么样子的?奇怪的是,我没有关于成员身份的部分。。我有这样一个问题:所有者设置正确。。它已经是我的电脑/我的用户了。如果我不使用Membership类,我可以连接到它,但是当我使用Membership类并登录时,我似乎无法连接到它。您可以删除“初始目录”部分吗?如果使用用户实例,我相信您不需要它。在哪里可以找到machine.config文件?在我的计算机上,它位于
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config
Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString)
exec sp_grantlogin 'My-PC\MyUser2'