Nhibernate &引用;找不到数据库持久性";在新设置的站点上与Umbraco和Courier发生错误

Nhibernate &引用;找不到数据库持久性";在新设置的站点上与Umbraco和Courier发生错误,nhibernate,persistence,umbraco,stack-trace,Nhibernate,Persistence,Umbraco,Stack Trace,我也将要发布我的答案,但我昨晚在谷歌上搜索时找不到,所以我认为这是值得在这里列出的,因为其他人在晚上9点的时候会发疯 我创建了一个已经存在于其他地方的站点的新实例(我需要制作一个快照以进行安全测试,同时继续进行错误修复)。为此,我做了以下工作: 已停止目标Web服务器 复制整个webroot,包括umbraco文件夹、空的App\u数据以及所有资产、宏、模板等。(为了做到这一点,我实际上制作了一个webroot的zipfile,并将其重新放在目标web服务器上,但更标准的版本也会有同样的效果。)

我也将要发布我的答案,但我昨晚在谷歌上搜索时找不到,所以我认为这是值得在这里列出的,因为其他人在晚上9点的时候会发疯

我创建了一个已经存在于其他地方的站点的新实例(我需要制作一个快照以进行安全测试,同时继续进行错误修复)。为此,我做了以下工作:

  • 已停止目标Web服务器
  • 复制整个webroot,包括
    umbraco
    文件夹、空的
    App\u数据
    以及所有资产、宏、模板等。(为了做到这一点,我实际上制作了一个webroot的zipfile,并将其重新放在目标web服务器上,但更标准的版本也会有同样的效果。)
  • 备份数据库(在我的例子中有两个,但只有一个是Umbraco的),并将其恢复到目标数据服务器上的新数据库
  • 已重新启动目标Web服务器
  • 通常情况下,我的下一步是告诉Umbraco重新发布该网站,清除任何缓存,但在尝试访问
    http://mydomain.com/umbraco/
    ,我收到一条错误信息:

    找不到数据库持久性,请确保您的/bin中有有效的连接字符串和Umbraco.Courier.persistence.*dll

    还有一个

    Umbraco.Courier.Core.PersistenceManager.GetPersistenceProvider(Guid id)+294
    c:\Program Files(x86)\teamcity\buildAgent\work\872C402D344319C\Core\Umbraco.Courier.Providers\DocumentTypeItemProviders\DocumentTypeItemProvider.cs:140中的Umbraco.Courier.ItemProviders.DocumentTypeItemProvider.HandlePack(ItemIdentifier id)
    Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id)+88
    c:\Program Files(x86)\teamcity\buildAgent\work\872c402d3442319c\Contrib\Providers\Umbraco.Courier.RepositoryProviders\Local.Package(ItemIdentifier itemId)中的Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId):227
    Umbraco.Courier.Cachehandler.V4.Cachehandler.\u c:\Program Files(x86)\teamcity\buildAgent\work\872C402D34429C\Contrib\Providers\Umbraco.Courier.Cachehandler.V4\Cachehandler\Cachehandler.cs:211中的sendtoche(ItemIdentifier itemId)
    Umbraco.Courier.Cachehandler.V4.Cachehandler.DocumentType_AfterSave(DocumentType sender,SaveEventArgs e)在c:\Program Files(x86)\teamcity\buildAgent\work\872C402D344319C\Contrib\Providers\Umbraco.Courier.Cachehandler.V4\Cachehandler\Cachehandler.cs:133
    Vega.USiteBuilder.DocumentTypeManager.SynchronizedDocumentType(typeDocType,TypeBaseTypeDocType)+574
    Vega.USiteBuilder.DocumentTypeManager.SynchronizedDocumentTypes(类型baseTypeDocType)+146
    Vega.USiteBuilder.DocumentTypeManager.Synchronize()+56
    Vega.USiteBuilder.UmbracoManager.Synchronize()+120
    Vega.USiteBuilder.UmbracoManager.SynchronizeIfNotSynchronized()+85
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+80
    System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+270
    
    现在我知道
    Umbraco.Courier.Persistence.*
    DLL都存在了,这不仅仅是因为我刚刚从工作环境中复制了它们


    那又有什么用呢?

    上周我在这件事上浪费了好几次时间,我突然想到,下次发生的时候,我要记下如何修复它

    所需要做的就是回收应用程序池。如果您不确定如何执行此操作,请查看以下链接之一:

    • Hosting.com:
    • TechNet at-TechNet上的IIS6说明真的很糟糕
    • 堆栈溢出:
    • 堆栈溢出:

    我希望这能让其他人免于前几天晚上下班后感觉良好的沮丧情绪。

    我不得不承认,这种解决方案并不总是奏效;我们在尝试使用最新的Umbraco 4.11.1版本部署Courier(build 26)时遇到了相同的“数据库持久性”错误,从Umbraco Courier仪表板单击“部署”也会出现相同的错误。回收此站点的应用程序池没有帮助


    作为帮助信息发布到umbraco.org,如果我得到解决,我将在这里发布。

    嗨,Owen,我们做了相同的基本备份/恢复过程,但回收应用程序池没有帮助。你还有其他建议吗?哦,太糟糕了。恐怕我不知道;我想您的
    ~/bin/
    文件夹中确实存在该DLL?每次我需要的时候,回收应用程序池肯定对我有用。我知道内置的类型查找器非常糟糕;我相信在新版本(poss 4.10,已经发布)中这一点正在得到改进。但我想这没什么帮助。抱歉…谢谢你发布你的答案。它帮助了我(Umbraco 6.0.7)很高兴我能帮上忙,@Mounhim:o)这不是我应该提到的问题的答案,我们正在运行Umbraco 4.7.1.1