2015-07-02 47 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已经有一个上下文标签,所以我猜测发布序列跳过添加自己的初始化程序,因为它相信我知道我在做什么,我不会:)

删除相关的上下文标记修复了这个问题。现在调用种子方法,并登录到记录器。

谢谢大家的帮忙