我有一個使用實體框架代碼優先創建的Web應用程序。在設置它的時候,我設法通過指定DBContext的完整命名空間和類作爲連接字符串的名稱,將我的數據庫連接字符串與我的DBContext匹配。實體框架代碼首先忽略連接字符串,使用IIS代替
<add name="MyClassProject.EfDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=true;User Id=MyUsername;Password=MyPassword;" providerName="System.Data.SqlClient"/>
最初,當我成立了這個項目,我只是在C:\中創建的Inetpub \ wwwroot文件,只是運行它通過Visual Studio。一切正常。
現在我試圖讓代碼生成到一個單獨的網站文件夾,並讓該網站運行,因爲它是在IIS中的自己的網站和應用程序池。我建立了網站和我的主機文件,但是當我去運行它時,我收到以下錯誤。
無法打開登錄所請求的數據庫「MyDatabase」。登錄失敗。
用戶'IIS APPPOOL \ MyAppPool'登錄失敗。
我不知道爲什麼發生這種情況,因爲我似乎在指定安全的用戶名和密碼,我的連接字符串使用了DB ....所以爲什麼它要連接的應用程序池我的網站正在運行?
另外,如何解決這個問題,而不必爲MyAppPool(或網絡服務,如果我改變它)SQL Server中的數據庫權限?
更新:我應該提到,我用我的初始化類的DbContext:
namespace MyClassProject
{
public class EfDbContext : DbContext
{
public EfDbContext() : base ("MyDatabase")
{
}
}
}
我已經從連接字符串中刪除了該屬性,但仍然存在相同的問題。我甚至嘗試明確設置Integrated Security = false;但那也沒用。 – 2013-03-05 01:04:17
@SeanHolmesby你確定它使用連接字符串嗎? – 2013-03-05 01:11:36
當我運行Visual Studio(當它運行時)它肯定會將數據添加到我試圖引用的數據庫中。 我有: - 命名空間MyClassProject { 公共類EfDbContext:的DbContext { 公共EfDbContext() :基地( 「MyDatabase的」) {} } } ......而然後...... connectionStrings> –
2013-03-05 01:17:14