2016-05-18 59 views
0

我們有一個ASP.NET應用程序連接到我們的數據庫。我們使用XML配置文件來處理這個連接,該配置文件包含訪問數據庫的方式(用戶名,密碼等)。然而,當我們嘗試訪問某些頁面時,我們會看到黃色的死亡屏幕和一條消息Login failed for user xxx'/'應用程序中的服務器錯誤 - 用戶登錄失敗

當以本地方式運行本地時,不會出現此錯誤。當我們將服務部署到服務器時,會出現此錯誤消息。我們的連接字符串如下所示:

<add key="DBConnection" value="Data Source=[ServerNameHere];Initial Catalog=[DBNameHere];MultipleActiveResultSets=True;User Id=[usernamehere];Password=[passwordhere];" /> 

對於我們的SQL Server,我們啓用了SQL Server和Windows身份驗證模式。我已經檢查了sa帳戶的登錄屬性,並將「連接到數據庫引擎的權限」設置爲「授予」,並將「登錄」設置爲「啓用」,兩者仍然存在相同的問題。服務器和數據庫也在同一臺機器上。

這些是其他人遇到同樣問題時最常見的解決方案,還有別的方法可以解決問題嗎?

最後要注意的是,當我們得到了Loging failed for user xxx,該xxx是機器的名稱,所以它看起來像Domain\MachineName$當我們死亡的黃色畫面。

編輯:引發的異常如下: System.Data.SqlClient.SqlException: Login failed for user 'Domain\MachineName$'.我已禁用Visual Studio中的「繼續異常」,但在本地調試應用程序時無法找到此錯誤。

+1

是否引發異常?可以從服務器到達數據庫嗎?你的錯誤記錄是什麼意思?數據庫用戶的域是否正確? – user1666620

+0

確實有!我將更新我的帖子 – Novastorm

+0

工作頁面是否與引發異常的頁面訪問相同的數據庫(使用相同的連接字符串)? – bassfader

回答

0

好吧,原來問題是我們的IIS管理器託管我們的Web應用程序的服務沒有正確的權限來訪問數據庫。要解決這個問題需要進入SQL Manager並同時添加登錄和用戶對我們的應用程序池的問題...

  • 打開SQL Server Management Studio並連接到目標服務器
  • 下的服務器展開安全文件夾,右鍵單擊登錄,然後選擇新建登錄...

enter image description here

  • 請啓用Windows身份驗證。登錄名應該是IIS APPPOOL \ [您的服務在IIS上寄存的名稱]

  • 單擊屏幕左側的「服務器角色」鏈接,並確保選中了公共和系統管理員。

  • 單擊屏幕左側的用戶映射鏈接,然後選擇您希望Web服務可以訪問的數據庫。
  • 單擊左側的狀態鏈接,並確保將設置設置爲允許連接到數據庫的授權和啓用登錄。

現在創建一個用戶,你想訪問數據庫...

  • 展開您選擇的數據庫,並展開Security文件夾(不要混淆與上面的安全文件夾!)。右鍵點擊它並選擇新用戶...

enter image description here

  • 確保用戶類型與登錄SQL用戶(可能的變化取決於如何您的項目正在訪問DB)
  • 到登錄名稱框的左邊會出現一個與...按鈕就可以了,點擊它

enter image description here

  • 這會彈出一個新窗口。點擊它,然後選擇您之前創建的登錄名。確定所有的窗戶。

  • 複製和粘貼的登錄名與用戶名

  • 在左邊選擇擁有的方案,並確保db_reader和db_writer選擇

  • 選擇左側的成員,並確保db_reader和db_writer選擇

  • 單擊確定以創建用戶;託管服務的應用程序池現在應該能夠訪問數據庫

相關問題