无法打开数据库“”;aspnetdb”;登录时请求.登录失败

本文关键字:登录 请求 失败 aspnetdb 数据库 | 更新日期: 2023-09-27 17:58:00

我可以用我的登录名登录和浏览。但当我按下页面上的超链接时,它就会抛出以下内容:

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

用户"DIMA-00AA1DA557''DIMA"登录失败。

描述:在执行当前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>

无法打开数据库“”;aspnetdb”;登录时请求.登录失败

正如"Rune 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连接字符串,我还建议您删除它,以避免这种混乱。

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

检查以确保:

您的连接字符串中有正确的服务器名称。它真的是localhost吗?或者您可能安装了SQL Server Express,结果却变成了(本地)''SQLExpress??

您要连接的服务器有Philip Desktop''Philip的登录名(请检查对象资源管理器->(您的服务器)->安全性->登录名)

数据库ASPNETDB有一个基于该登录名的用户,以便您可以使用该数据库(检查对象资源管理器->(您的服务器)->数据库->(数据库)->安全性->用户)

admin.aspx页面确实引用了您给定的连接字符串(WIJLConnectionString1)。您的Admin文件夹中是否有一个单独的web.config,例如,它有不同的连接字符串,而Admin.aspx页面却引用了该连接字符串??

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