2011-05-27 110 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頁面引用連接字符串?

相關問題