2009-08-28 243 views
4

我正在使用SQLServer2005和VS2008。我在web.config中的連接字符串是:Web.config身份驗證錯誤

add name="library" connectionString="Data source=KMT; Initial Catalog=Library;Integrated Security=SSPI" 

這裏,KMT是我的服務器名稱,Library是我的數據庫。

當我通過VS2008 localhost運行我的頁面時,沒關係。但是,通過IIS查看時,會顯示一條錯誤消息,如「用戶登錄失敗」,KMT/ASP.NET'「。我的sqlserver身份驗證模式是windows,在web.config中可以。什麼是解決方案?

回答

2

我的一個朋友幫我解決這個問題,因爲我 執行的SQL添加ASPNET作爲登錄到 我的數據庫和設置權限DA

EXEC sp_grantlogin N'MACHINE \ ASPNET」 的exec sp_defaultdbñ 'MACHINE \ ASPNET',N'Database ' 使用數據庫 EXEC sp_grantdbaccess N'MACHINE \ ASPNET',N'ASPNET ' EXEC sp_addrolemember N'db_owner',N'ASPNET」

這裏Machine是計算機名和數據庫是我的數據庫名稱。 但通過這個ASPNET用戶總共控制該數據庫的 。

2

使用「集成安全性」意味着使用運行該進程的用戶的身份登錄到數據庫。當您運行本地VS Web服務器時,它將作爲您的登錄名運行。但在IIS中,Web服務器工作進程作爲預定義的用戶帳戶運行。 您的工作進程標識必須具有您的SQL Server和數據庫的權限。

檢查您的應用程序池在IIS中的屬性。例如,如果您以網絡服務身份運行,請進入SQL並創建一個新用戶,輸入網絡服務作爲Windows用戶名,並將該用戶權限授予您的數據庫。

0

VS2008使用您的憑據授權到數據庫,IIS使用不同的帳戶。 確保IIS帳戶有足夠的權限。

0

如果使用集成安全性= SSPI,則當前用戶(在VS中就是YOU)的憑證將用於連接到SQL Server。

從IIS應用程序,與IIS服務相關聯的用戶用於日誌

解決方案:

  • 指定的IIS服務,它是允許的連接到SQL

  • 一個特殊的用戶
  • 使用SQL Server認證來訪問數據庫,並在連接字符串中存儲用戶名/密碼

0

您打算使用ASP.NET系統帳戶還是用戶Windows帳戶?

如果後者需要impersonation。如果SQL和IIS位於同一臺計算機上,那麼這種方法很有效,否則它是一個雙躍點,並且需要一些不重要的工作來設置委派。

0

如果服務器是Windows 2003,則可以授予網絡服務訪問SQL Server的權限