簡體   English   中英

無法打開登錄請求的數據庫“aspnetdb”。 登錄失敗

[英]Cannot open database “aspnetdb” requested by the login. The login failed

我可以使用我的登錄名登錄和瀏覽。 但是一旦我在我的頁面上按下一個超鏈接,它就會拋出這個:

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>

正如“Rune FS”在評論中指出的那樣,您已經將數據庫連接字符串配置為使用集成身份驗證,這是一件好事,因為您沒有在配置文件中存儲顯式用戶名/密碼。

但是,您需要知道它從哪里獲取“集成”憑據 - 在這種情況下,IIS(或 VS 開發服務器)正在運行的用戶的憑據用於連接到數據庫 - 如果它正在使用您的 Windows 登錄名,我假設您使用的是 IIS Express 或 VS 開發服務器?

我相信您遇到的問題是,雖然您啟用了角色管理器,但您尚未對其進行配置,並且您啟用了默認的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 用戶連接到該數據庫並使用它。

檢查以確保:

您的連接字符串中有正確的服務器名稱。 它真的是本地主機嗎? 或者您是否安裝了 SQL Server Express 並最終改為 (local)\SQLExpress ?

您要連接的服務器具有 Philip-Desktop\Philip 的登錄名(檢查 Object Explorer ->(您的服務器)-> Security -> Logins)

數據庫 ASPNETDB 有一個基於該登錄名的用戶,以便您可以使用該數據庫(檢查 Object Explorer ->(您的服務器)-> 數據庫 ->(您的數據庫)-> 安全性 -> 用戶)

您的 admin.aspx 頁面真正引用了您提供的連接字符串 (WIJLConnectionString1)。 是否有任何機會在您的管理文件夾中單獨的 web.config 具有不同的連接字符串,並且 admin.aspx 頁面改為引用該連接字符串?

首先檢查 SQL 服務器是否開啟了混合模式認證。 然后創建一個 SQL 登錄並將其分配為數據庫用戶。 完成后,您可以將這些憑據放入連接字符串中並取出受信任的安全選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM