I'm about to post my answer to this, as well, but I couldn't find this when googling last night so figured it's worth listing here for anyone else pulling their hair out at 9pm.
I created a new Umbraco instance of a site that already exists elsewhere (I needed to make a snapshot for security testing whilst bugfixing continues). To do so, I did the following:
- Stopped the destination webserver.
- Copied over the entire webroot, including the
umbraco
folder, an emptyApp_Data
and all the assets, macros, templates and so on. (To do this, I actually made a zipfile of the webroot and reinflated it onto the destination webserver, but a more standard xcopy deployment would have the same effect.) - Backed up the database (two of them, in my case, but only one is Umbraco's) and restored it to a new database on the destination dataserver
- Restarted the destination webserver.
Normally, my next step would be to tell Umbraco to republish the site, to clear any caches but, on trying to visit http://mydomain.com/umbraco/
, I get a yellow screen of death error reading:
Database persistence could not be found, please ensure you have a valid connection string and a Umbraco.Courier.Persistence.* dll in your /bin
and a stack trace of
Umbraco.Courier.Core.PersistenceManager.GetPersistenceProvider(Guid id) +294
Umbraco.Courier.ItemProviders.DocumentTypeItemProvider.HandlePack(ItemIdentifier id) in c:\Program Files (x86)\teamcity\buildAgent\work\872c402d3442319c\Core\Umbraco.Courier.Providers\ItemProviders\DocumentTypeItemProvider.cs:140
Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) +88
Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\872c402d3442319c\Contrib\Providers\Umbraco.Courier.RepositoryProviders\Local\Local.cs:227
Umbraco.Courier.Cachehandler.V4.CacheHandler._sendToCache(ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\872c402d3442319c\Contrib\Providers\Umbraco.Courier.CacheHandler.V4\Cachehandlers\CacheHandler.cs:211
Umbraco.Courier.Cachehandler.V4.CacheHandler.DocumentType_AfterSave(DocumentType sender, SaveEventArgs e) in c:\Program Files (x86)\teamcity\buildAgent\work\872c402d3442319c\Contrib\Providers\Umbraco.Courier.CacheHandler.V4\Cachehandlers\CacheHandler.cs:133
Vega.USiteBuilder.DocumentTypeManager.SynchronizeDocumentType(Type typeDocType, Type baseTypeDocType) +574
Vega.USiteBuilder.DocumentTypeManager.SynchronizeDocumentTypes(Type 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 step, Boolean& completedSynchronously) +270
Now I know that the Umbraco.Courier.Persistence.*
DLLs are all present — not least because I just copied them from a working environment.
So what gives?