我正在尝试将内容从我们的UAT服务器导入我们的生产服务器。
生产数据库最初是从UAT数据库克隆的,两个代码库都是相同的。
我的导出/导入过程非常简单,首先:http://screencast.com/t/UkT1W7t7g
然后我收到UAT中所有内容的最终文件(7MB +),然后我转到Production并选择以下内容:http://screencast.com/t/UkT1W7t7g
点击导入时出现以下错误:http://screencast.com/t/lgr7jeFX
这是我在错误日志中得到的:
2016-11-28 10:31:04,995 [5] ERROR EPiServer.Core.Transfer.TransferLogger: 10.5.3 Export/import error: Exception: Cannot be the same as destination
Parameter name: contentLinkID
System.ArgumentException: Cannot be the same as destination
Parameter name: contentLinkID
at EPiServer.DataAccess.ContentSaveDB.Move(Int32 contentLinkID, Int32 destinationLinkID, Boolean archive)
at EPiServer.DataAbstraction.ContentStore.Move(Int32 contentLink, Int32 destinationLinkID, Boolean archive)
at EPiServer.DefaultContentProvider.Move(ContentReference contentReference, ContentReference destinationLink)
at EPiServer.Core.Transfer.ContentTransfer.MoveContent(IContent content, ContentReference parentLink, AccessLevel requiredDestinationAccess)
at EPiServer.Core.Transfer.ContentTransfer.Import(RawContent rawContent, AccessLevel requiredDestinationAccess, Guid& importedPageGuid)
at EPiServer.Core.Transfer.ContentTransfer.Import(ITransferContentData content, AccessLevel requiredDestinationAccess)
at EPiServer.Enterprise.DataImporter.ImportContents[T](XmlTextReader reader, ZipPackage package)
at EPiServer.Enterprise.DataImporter.ImportStream(ZipPackage package, XmlTextReader reader, String partName)
at EPiServer.Enterprise.DataImporter.ImportPartOfPackage(ZipPackage package, String partName)
at EPiServer.Enterprise.DataImporter.ImportRaw(ZipPackage package)
at EPiServer.Enterprise.DataImporter.Import()
System.ArgumentException: Cannot be the same as destination
Parameter name: contentLinkID
at EPiServer.DataAccess.ContentSaveDB.Move(Int32 contentLinkID, Int32 destinationLinkID, Boolean archive)
at EPiServer.DataAbstraction.ContentStore.Move(Int32 contentLink, Int32 destinationLinkID, Boolean archive)
at EPiServer.DefaultContentProvider.Move(ContentReference contentReference, ContentReference destinationLink)
at EPiServer.Core.Transfer.ContentTransfer.MoveContent(IContent content, ContentReference parentLink, AccessLevel requiredDestinationAccess)
at EPiServer.Core.Transfer.ContentTransfer.Import(RawContent rawContent, AccessLevel requiredDestinationAccess, Guid& importedPageGuid)
at EPiServer.Core.Transfer.ContentTransfer.Import(ITransferContentData content, AccessLevel requiredDestinationAccess)
at EPiServer.Enterprise.DataImporter.ImportContents[T](XmlTextReader reader, ZipPackage package)
at EPiServer.Enterprise.DataImporter.ImportStream(ZipPackage package, XmlTextReader reader, String partName)
at EPiServer.Enterprise.DataImporter.ImportPartOfPackage(ZipPackage package, String partName)
at EPiServer.Enterprise.DataImporter.ImportRaw(ZipPackage package)
at EPiServer.Enterprise.DataImporter.Import()
我不知道问题可能是什么,非常感谢任何帮助。
P.D。:我已经在EPiServer Dev Forum http://world.episerver.com/forum/developer-forum/-Episerver-75-CMS/Thread-Container/2016/11/error-during-import-system-argumentexception-cannot-be-the-same-as-destination
上问了同样的问题答案 0 :(得分:1)
我认为这是怎么回事?
您导出的软件包将在导入时选择的节点下面导入 - 而不是覆盖所选的目标节点。
例如,您可以在UAT中的根页下导出起始页,然后选择Root
作为生产中的目标。导入时,起始页面将低于 Root
页面。
在UAT环境中导出Root
页面,然后尝试将导出到生产环境中的Root
页面时,会发生错误。
基本上,您正在尝试导入目标根页面下的源根页(因此有关内容ID与目标ID相同的例外情况)。
答案 1 :(得分:1)
感谢explanation Ted。我做了以下工作并且有效:
在UAT
导出开始:http://screencast.com/t/FgHRnOhuauR使用"导出页面链接到的文件"未选中状态。
导出结束:http://screencast.com/t/aPe0Ntvb9aq
将10583个内容项导出到文件中。
然后在制作
导入开始:http://screencast.com/t/qqkBsL731P使用"更新匹配ID&#34的现有内容项;检查。
导入正在进行中:http://screencast.com/t/reSfMnCV8
我注意到的一件事是,最后它说它只更新了一部分内容项,实际上我做了几次,因为UAT正在被积极编辑并获得28,16,1或者结果导入的8个项目(10500+以上)我想这是因为那些是唯一的变更或新项目。
我确实检查了几个我知道已更新的块,并在导入后与新版本匹配。
正如我所做的那样,我将Ted´s answer标记为已被接受。
我认为有点混淆了内容树中元素的选择,因为我想从root获取所有内容并将其移动到另一台服务器上的根目录,但似乎不是它的工作方式。
答案 2 :(得分:0)
当contentLinkID等于destinationLinkID
时,会发生该错误反映的代码确认了这个
public void Move(int contentLinkID, int destinationLinkID, bool archive)
{
if (contentLinkID == destinationLinkID)
{
throw new ArgumentException("Cannot be the same as destination", "contentLinkID");
}
// ...
检查您的episerver日志文件,他们会告诉您导致错误的contentLinkID。
最好的猜测是
通常这是大多数人放弃的地方,而是使用数据库备份/恢复来迁移Episerver。但是,如果你真的想对此进行全面讨论,我建议自定义导入,请查看Patrick van Kleef关于内容迁移的文章http://www.patrickvankleef.com/2015/08/18/episerver-content-migration/。
Episerver确实应该尽快解决这个问题!