2015-07-02 88 views
2

我剛剛將我的應用發佈到IIS服務器(localhost)。在發佈的IIS上未觸發種子方法

這是檢查發佈過程。一切順利,文件被複制,網站開始很好,沒有錯誤,數據庫被創建。

我錯過了一件事:數據。我的種子方法沒有被觸發,因此最初的數據丟失了。

我試着在微軟網站上查看,也在StackOverflow中無濟於事。

這是我的遷移配置和種子:

internal sealed class Configuration : 
    DbMigrationsConfiguration<CobwebsCommon.DAL.CobwebsContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
     ContextKey = "CobwebsCommon.DAL.CobwebsContext"; 
    } 

    protected override void Seed(CobwebsCommon.DAL.CobwebsContext context) 
    { 
     //if (System.Diagnostics.Debugger.IsAttached == false) 
     // System.Diagnostics.Debugger.Launch(); 
     Logger.Info("Cobwebs DB seed started"); 
     try 
     { 
      var db = new CobwebsContext(); 

      DbGen dbGen = new DbGen(context); 
      dbGen.GenerateDb(); 
     } 
     catch (Exception e) 
     { 
      Logger.Error("Error creating db: {0}", e); 
     } 
     Logger.Info("Cobwebs DB seed finished"); 

    } 
} 
+0

_「我的種子方法沒有觸發」_--你確定嗎?你的日誌記錄_work_? – CodeCaster

+0

你要保存嗎?爲什麼你需要vardb = new CobwebsContext();' –

+0

@CodeCaster是的,我的日誌文件確實有一些行,但以上代碼中沒有三個 – Chiptus

回答

0

好了,你告訴我,我應該使用的初始化。不像開發中,部署時,web.config必須有一個初始化器(除非你不需要任何db init數據)。

當您使用VS 2013中的發佈對話框進行發佈時,您可以選擇告訴數據庫正在使用代碼優先遷移。 通過本指南:http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-to-iis,來自類型MigrateDatabaseToLatestVersion的初始值設定項應該添加到web.config中,但在我的情況下它沒有,這就是爲什麼沒有觸發種子方法。

我的項目的問題是,web.config已經有一個上下文標籤,所以我猜測發佈序列跳過添加自己的初始化程序,因爲它相信我知道我在做什麼,我不會:)

刪除相關的上下文標記修復了這個問題。現在調用種子方法,並登錄到記錄器。

謝謝大家的幫忙