2014-01-14 148 views
1

我在IIS中託管了我的WCF應用程序,並設置了集成4.0的應用程序池。我將池標識配置爲網絡服務。我已經檢查了與此問題相關的其他帖子,但無法解決。實體框架登錄失敗錯誤

我得到下面的異常

System.Data.Entity.Core.EntityException was unhandled by user code 


HResult=-2146233087 
    Message=The underlying provider failed on Open. 
    Source=EntityFramework 

我試着從網絡服務修改應用程序池爲本地,它工作正常。 任何猜測爲什麼它需要我的系統名稱作爲登錄在早先的情況下?

+0

您的連接字符串中的安全設置已設置爲true,可能優先於用戶名和密碼。嘗試在您的憑據下運行App Pool(或者更好的方法是,創建一個服務帳戶,登錄到SQL Server並運行該服務帳戶下的App Pool,並將集成安全性設置爲true)。另一種選擇是將集成安全性設置爲false。 – Tim

回答

0

答:這是愚蠢的錯誤!在我的sql服務器登錄中沒有NT AUTHORITY \ NETWORK SERVICE帳戶。我已經添加了必要的權限。它現在與我的網絡服務應用程序池的配置以及連接字符串中的集成安全性= true一起工作。

2

該問題與實體框架無關。您無法連接到您的SQL Server。我會檢查這些東西:

  • 確保SQL Server是啓動和運行。檢查您的正在運行的服務,看看SQL Server service是否已啓動。

  • 我會檢查SQL Server Configuration Manager以查看是否啓用了TCP/IP通信。

  • 我會檢查我的防火牆設置。也許SQL Server和客戶端之間存在一些問題。

  • 我會檢查是否來自同一客戶端的另一個應用程序可以連接到同一臺服務器。然後我會檢查連接字符串的差異

  • 如果以上所有的都正常播放,那麼我會檢查特定的SQL Server上的特權,在特定的數據庫上,因爲我想與連接的帳戶。允許每個人都使用此數據庫作爲檢查它是否是帳戶權限問題的第一步。 使用此特定配置(Integrated Security=true)意味着您的用戶名和密碼將被忽略。如果要使用特定的用戶名和密碼訪問SQL服務器,則應該省略連接字符串中的特定語句,或將其設置爲false。

你可以檢查this connection strings example post

希望我幫了忙!

+0

這些都是很好的檢查,但在這種情況下,我相信運行App Pool的帳戶沒有足夠的權限登錄到SQL Server。請注意,連接字符串中的Integrated Security = True和錯誤消息:'Message = Login for user'MS \ LH7U0CNU3369CKR $'' – Tim

+1

是的,只要我保持Integrated Security = true,App Pool身份爲Localsystem,該應用程序工作。當我將App Pool標識更改爲Network Service時,出現登錄失敗錯誤(無論是啓用集成安全性還是在連接字符串中提供域用戶憑據)。請告訴我有關網絡服務的配置,如果我在某個地方做錯了。我也在sql server登錄中爲用戶標識(我的Windows登錄標識)提供了管理員權限。 – techspider

+0

您應該爲特定數據庫**上的特定帳戶**提供權限。不在整個SQL Server上。我希望現在很清楚。 –

3

在連接字符串中,您將Integrated Security設置爲「true」。這很可能導致用戶名和密碼被忽略。運行App Pool的身份將用於嘗試登錄。

兩種方式解決此問題:

  1. 一套完整的安全性爲 「假」。

  2. 使用帳戶(連接字符串或創建的帳戶中的帳戶)運行應用程序池,並將集成安全保留爲「true」。爲此,運行App Pool的帳戶需要登錄權限(如果需要,還需要EXECUTE或SELECT等任何其他權限)到SQL Server實例。

我們在EF和良好的普通舊ADO.NET上都這樣做。我們創建用於運行App Pool的服務帳戶,並授予服務帳戶必要的登錄權限和其他權限。您還必須啓用SQL Server才能接受Windows身份驗證。

+0

我在研究方法時粘貼了連接字符串。實際上,我刪除了(並設置爲false)集成安全性。我已經將此用戶添加到SQL Server登錄中,並使用Windows身份驗證提供管理員訪問權限。在連接字符串中,我提供了用戶id = domain \ username; password = ntpassword。但是,然後我開始得到用戶域\用戶名登錄失敗的錯誤。 – techspider

+0

當我在應用程序池中添加自定義標識並在瀏覽器中打開svc文件時,我收到一條消息「服務不可用」。我可以連接到數據庫的唯一方法是將標識標記爲LocalSystem,並提供集成的安全性= true;從連接字符串中刪除用戶標識和密碼。 – techspider