2011-05-27 83 views
4

我可以登录并使用我的登录名浏览。但只要我按我的网页上的超链接,它抛出这样的:无法打开登录请求的数据库“aspnetdb”。登录失败

Cannot open database "aspnetdb" requested by the login. The login failed. 

用户登录失败“DIMA-00AA1DA557 \迪马”。

描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

异常详细信息:System.Data.SqlClient.SqlException:无法打开登录请求的数据库“aspnetdb”。登录失败。 用户'DIMA-00AA1DA557 \ Dima'登录失败。

它为什么这样做/ ...

我觉得一切都还好我的连接字符串和成员提供:

<connectionStrings> 
    <clear /> 
    <add name="LocalSqlServer" providerName="System.Data.SqlClient" connectionString="Data Source=localhost;Integrated Security=SSPI; Initial Catalog=aspnetdb" /> 
    <add name="YourGuruDB" connectionString="Data Source=DIMA-00AA1DA557;Initial Catalog=model;Integrated Security=True"/> 
    <add name="modelConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename='D:\Documents and Settings\Dima\My Documents\Visual Studio 2010\WebSites\WebSite10\App_Data\ASPNETDB.MDF';Integrated Security=True;User Instance=True;Trusted_Connection=Yes;" providerName="System.Data.SqlClient"/> 
</connectionStrings> 
<system.web> 
    <authentication mode="Forms"> 
    <forms name=".MyCookie" 
      loginUrl="~/Registration.aspx" 
      protection="All" 
      timeout="30" path="/" > 
     <credentials passwordFormat="MD5"> 
     <user name="user" password="ca064d0730abfeb09e383a0e82e65f73"/> 
     </credentials> 
    </forms> 
    </authentication> 

    <roleManager enabled="true"/> 

    <membership defaultProvider="MyMembershipProvider"> 
    <providers> 
     <clear/> 
     <add name="MyMembershipProvider" 
      type="System.Web.Security.SqlMembershipProvider" 
      connectionStringName="modelConnectionString" 
      minRequiredPasswordLength="1" 
      minRequiredNonalphanumericCharacters="0" 
      enablePasswordReset="true" 
      maxInvalidPasswordAttempts="1000" 
      passwordAttemptWindow="4000" 
      enablePasswordRetrieval="true" 
      requiresUniqueEmail="false" 
      passwordFormat="Encrypted" 
      applicationName="/WebSite10" /> 
    </providers> 
    </membership> 
+0

我认为这与“文档和设置”下的文件权限有关。尝试将您的ASP.NET移动到另一个地方(如C:\),以查看您的网站是否正常工作。 – 2011-05-27 13:36:33

+0

我该如何解决这个问题?为什么要采用“dima”的名字,我从来没有登录/注册过这个名字..我如何防止使用dima名称并使用登录的用户名呢? – 2011-05-27 13:42:52

+0

Thom,如果我宁愿让它在视觉工作室项目中与其他文件一起... – 2011-05-27 13:44:11

回答

3

为“符文FS”在评论中指出的,你”已将数据库连接字符串配置为使用集成身份验证,这是一件好事,因为您没有在配置文件中存储明确的用户名/密码。

但是,您需要知道从哪里获取“集成”凭据 - 在此实例中,IIS(或VS Dev Server)运行的用户的凭据用于连接到数据库 - 如果它使用您的Windows登录名,我假设您使用的是IIS Express或VS Devevelopment Server?

我相信你有这个问题是,当您启用了角色管理器,您还没有配置它,你已经离开启用默认LocalSqlServer连接字符串也指向一个名为aspnetdb数据库 - 通过默认情况下,它将尝试使用默认角色管理器提供程序,该提供程序使用LocalSqlServer连接。

修改<rolemanager />元素为:

<rolemanager enabled="true" defaultProvider="MyRoleProvider" > 
    <providers> 
    <clear /> 
    <add name="MyRoleProvider" 
     applicationName="/" 
     connectionStringName="modelConnectionString" 
     type="System.Web.Security.SqlRoleProvider" /> 
    </providers> 
</rolemanager> 

我也建议,如果你不使用它来避免这种混乱的去除LocalSqlServer连接字符串。

+0

Ben感谢您的帮助,正如我指出的那样,我从Web配置和machine.config中删除了整个垃圾。我在哪里放hte rolemanager代码? (它显示了上面的rolemanager标签下的一条蓝线!)..我可以安全地用WAT编辑用户角色吗?是否将所有设置都添加到rolemanager? – 2011-05-27 14:45:22

+1

好吧,现在所有的作品,我会读更多关于角色经理 – 2011-05-27 14:58:30

0

首先检查SQL Server是否启用了混合模式身份验证。然后创建一个SQL登录并将其分配为数据库用户。完成之后,您可以将这些凭证放入连接字符串中,并取出可信安全选项。

+0

有点复杂的方式来实现我已经达到了什么..但很高兴知道有一个替代解决方案 – 2011-05-27 14:46:41

+0

很高兴你有它排序,但我几乎呼吁五步曲折。 – 2011-05-27 15:16:32

+0

真的如此。不错的选择。 – 2013-06-26 07:44:15

1

Windows用户不允许连接到该数据库并使用它。

检查以确保:你有你的连接字符串中正确的服务器名

。它真的是本地主机吗?或者你是否安装了SQL Server Express,最终它是(本地)\ SQLExpress而不是?

,你连接到服务器有菲利普 - 桌面\菲利普登录(您在对象资源管理器 - >(服务器) - >安全 - >登录)

数据库ASPNETDB有一个用户(你的服务器) - >数据库 - >(你的数据库) - >安全 - >用户)

你的admin.aspx页面是真正的引用你给出的连接字符串(WIJLConnectionString1)。在您的Admin文件夹中是否有单独的web.config文件,例如有不同的连接字符串,并且admin.aspx页面引用连接字符串?

相关问题