2013-04-23 105 views
0

我有一個最初使用LocalDb的CodeFirst Web應用程序。我將連接字符串更改爲:將EF CodeFirst部署到服務器時出現問題

<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SqlExpress;Initial Catalog=aspnet-BatchFindings;Integrated Security=True" /> 

而且我使用Server explorer創建了適當的數據庫。

我正在使用WebDeploy發佈到運行IIS8的Windows Server 2012實例。

發佈後,我無法使用該應用程序;它沒有數據庫的權限。然後我將身份更改爲用戶帳戶,現在我不會收到數據庫錯誤。除了應用程序不會將任何數據保存到數據庫。我完全失敗 - 任何幫助表示讚賞!

回顧: 實體框架,代碼第一次 Web部署到IIS 8 自定義應用程序池,身份設置用戶帳戶

數據不被存儲在數據庫中。編輯:我希望能夠簡單地使用Web Deploy並使用它自己的數據庫(所以它不會從我的測試數據中獲得),但這太令人沮喪了!我正在發佈,連接字符串應該工作,不知道我哪裏錯了。

+1

此部署教程系列也從LocalDB開始,然後部署到SQL Server Express,可能會對您有用;請參閱本系列的第五部分:http://www.asp.net/web-forms/tutorials/deployment/visual-studio-web-deployment/introduction – tdykstra 2013-04-24 15:51:48

回答

0

愚蠢的問題,但你是否調用數據處理後的DbContext SaveChanges()方法 - 數據保存在測試時工作?

另外,您可以在測試(調試)和部署(發佈版本)時使用不同的web.config文件。

0

所以我無意中找出了它沒有保存的原因。出於某種原因,在我的測試環境一切正常,但是當它被推出了,我需要添加以下行:

db.Entry(obj).State = System.Data.EntityState.Added; 

我檢查了教程,這似乎工作,直到它進入的是Grant.sql文件。在Visual Studio中沒有選項可以連接。

我最終什麼事在這種情況下做得到數據庫的工作設置我的應用程序池下,我爲此創建一個用戶的身份運行,而加載用戶配置文件設置爲True。您還可以作爲LocalSystem運行(只要您創建以下文件夾:C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop - 這會誘使系統認爲LocalSystem帳戶是交互式的)。