【问题标题】:DNN indexer fails with 2sxc content modulesDNN 索引器因 2sxc 内容模块而失败
【发布时间】:2018-05-02 20:24:23
【问题描述】:

在最近的 DNN/2sxc 安装中,DNN 索引函数失败并出现 GeneralException:“字典中不存在给定的键。”

堆栈错误是:

消息:搜索:在选项卡 50、门户 1 上索引模块 458 时出错

堆栈跟踪:

ToSic.SexyContent.Environment.Dnn7.DnnBusinessController.GetModifiedSearchDocuments(ModuleInfo 模块信息,日期时间开始日期)在 C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\En​​vironment\Dnn7\DnnBusinessController.cs:第 89 行 DotNetNuke.Services.Search.ModuleIndexer.IndexSearchDocuments(Int32 portalId、ScheduleHistoryItem 计划、DateTime startDateLocal、 Action`1 索引器)

InnerMessage:给定的键不存在于 字典。

InnerStackTrace:

在 System.ThrowHelper.ThrowKeyNotFoundException() 在 System.Collections.Generic.Dictionary'2.get_Item(TKey key) at ToSic.SexyContent.ContentGroup.get_Template() 在 C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\ContentGroup.cs:line 70 在 ToSic.SexyContent.ContentBlocks.ModuleContentBlock..ctor(IInstanceInfo instanceInfo、Log parentLog、ITenant 租户、IEnumerable`1 覆盖参数)在 C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\ContentBlocks\ModuleContentBlock.cs:line 82 在 ToSic.SexyContent.Environment.Dnn7.Search.SearchController.GetModifiedSearchDocuments(IInstanceInfo 例如,日期时间开始日期)在 C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\Search\SearchController.cs:第 55 行 ToSic.SexyContent.Environment.Dnn7.DnnBusinessController.GetModifiedSearchDocuments(ModuleInfo 模块信息,日期时间开始日期)在 C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\En​​vironment\Dnn7\DnnBusinessController.cs:第 85 行 来源:ToSic.Sxc.Dnn

回收应用程序池使应用程序复活,但问题会一次又一次地出现。

我找到了这些解决方案:

Delete the DNN index files and reindex    
Remove and give back rights to the application pool to the index files    
Convert the site in English then set it back in French

但没有任何效果。该问题仅出现在 2sxc 模块(基本内容)上,而不会出现在其他模块上(例如 HTML)。

有什么办法解决这个问题吗?

环境:DNN 9.1.1 2SXC 9.23

【问题讨论】:

  • 在我的开发机器上的应用程序池之间交换时,我经常遇到类似的错误 - 这是在生产中发生还是没有在应用程序池之间交换?
  • 在生产中,我不会交换应用程序池。我只有一个网站,只有一个应用程序池。

标签: dotnetnuke 2sxc


【解决方案1】:

仅供参考:这似乎确实是个问题 - 我们正在解决这个问题,看看我猜这与 https://github.com/2sic/2sxc/issues/1564https://github.com/2sic/2sxc/issues/1561 有关

请注意,这已在 9.31 中修复,我们将在 9.32 中发布更多修复。

【讨论】:

  • 我今天在本地站点上工作时遇到了 3 次这些问题,很快就会被推送到生产环境中。我刚刚安装了 v09.31.00-pre1,因为这是撰写本文时的最新版本。如果我再次遇到错误,我会在这里报告。谢谢
【解决方案2】:

好消息是我不再有问题了... 坏消息是我不知道为什么......

作为一个真正的基础科学家,我同时做了几个动作,其中一个(或联合)解决了问题。我做了什么:

  • 升级到 2sxc 版本 9.30
  • 将应用程序池的回收时间设置为 10080 分钟(7 天)
  • 在 IIS 中取消选中静态和动态缓存
  • 安装了 Windows Server 更新(并重新启动了服务器)

另外,我正在使用 RDP 连接到服务器。当我开始连接时,我现在取消选中本地打印机、剪贴板和本地驱动器的使用(事实上,我没有将任何本地资源绑定到远程服务器)。我意识到有错误,因为我的本地打印机的驱动程序没有安装在远程服务器上。不确定它是否与它有关,但由于我不再需要这些绑定,所以我停用了它们。

下一步是尝试设置缓存并设置更短的时间来回收应用程序池。

如果我发现了什么,我会更新这篇文章。

【讨论】:

    【解决方案3】:

    我想这与对服务器上不存在的路径的引用有关。在每晚备份运行后,我们每晚都在经历这种情况。循环 AppPool 将其恢复(如您所指出的),但我们计划升级到 9.30(今天刚刚发布 - https://github.com/2sic/2sxc/releases)。愿 4 日与你同在!

    顺便说一句,我们注意到 9.23 被标记为“预发布”,所以使用这个版本可能不太聪明? :)

    【讨论】:

    • 请注意,这已在 9.31 中修复,我们将在今天或明天发布 9.32 并进行更多修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多