【问题标题】:cd_link.PageLink GetLinkAsString(...) causing pages to fail every other requestcd_link.PageLink GetLinkAsString(...) 导致页面每隔一个请求都失败
【发布时间】:2012-10-23 01:15:45
【问题描述】:

我目前正在从 Tridion R5.3 迁移到 Tridion 2011。我在通过演示服务器提供某些页面时遇到问题。作为参考,我所有的网页都是经典的 ASP,我在 IIS7.5 上运行它们。

我有一个位于http://www.example.com/widget/index.asp 的页面。当我第一次访问该页面时,我得到一个The page cannot be displayed because an internal server error has occurred.,如果我然后刷新页面它加载正常,如果我第三次刷新页面它会出现错误。该页面适用于所有其他请求。

我在我的网站上启用了失败的请求跟踪,但我收到了错误

ASP_LOG_ERROR
LineNumber: 87
ErrorCode: 800706be 
Description:

注意没有描述。

被调用的代码是

85: Dim objTranslationPageLink
86: Set objTranslationPageLink = Server.createObject("cd_link.PageLink")
87: strTranslatedPageLink = objTranslationPageLink.GetLinkAsString("tcm:0-12-1", "tcm:12-123456-64", "", "", "TranslationFound", False)
88: Set objTranslationPageLink = Nothing

看起来创建cd_link.PageLink对象没有问题,只是在调用GetLinkAsString(...)函数时。

我在许多其他页面中使用 cd_link.PageLink 对象没有问题,但似乎使用此特定代码的页面会遇到问题。

我认为这可能与缓存页面有关,但是我关闭了 ASP 页面的缓存(IIS7 > ASP > 服务 > 缓存属性),但问题仍然存在。

有什么想法吗?

编辑1

代码在 Windows Server 2003 IIS6 上运行良好。我正在尝试让它在 Windows Server 2008 IIS7 上运行。

编辑2

页面似乎创建了很多 cd_link.ComponentLinkcd_link.PageLink 对象。我有一个测试页面,我在其中创建了 10 个 ComponentLink 对象,我得到了错误(每隔一页),但如果我将其减少到 5 个 ComponentLink 对象,它每次都有效。

edit3

我的 cd_core.xxxx.xx.xx.log 出现以下错误

2012-11-02 11:55:34,027 错误 XMLConfigurationReader - 使用架构“schemas/cd_link_conf.xsd”验证文件“cd_link_conf.xml”时出错。 cvc-complex-type.3.2.2:属性“DefaultRootLocation”不允许出现在元素“Publications”中。

编辑4

感谢您对我的包容。我的 cd_link_config 问题已修复,似乎没有相关性。现在我的四个日志文件(cd_core、cd_deployer、cd_monitor、cd_transport)中的任何一个都没有错误,但原来的问题仍然存在。

【问题讨论】:

  • 我认为您有一个旧的 cd_link_conf.xml - 在新版本的 SDL Tridion 中,位置存储在存储配置文件中
  • @Quirijn,我现在已经修复了我的配置文件中的问题,并且错误日志中没有出现任何错误,但问题仍然存在!
  • 检查修补程序:CD_2011.1.0.78355。似乎接近您的问题

标签: tridion tridion-2011 tridion-content-delivery


【解决方案1】:

您似乎正在运行 CD Link windows 服务,以下修补程序可能有助于解决您的问题。我没有尝试过这个修补程序,但描述中写着Page link fails on second attempt of accessing the page,这意味着它可能会根据记录器内存资源广泛工作。

无论如何都值得一看这个修补程序:CD_2011.1.0.78355

说明:链接 windows 服务未正确清理某些 windows 平台上的记录器内存资源

【讨论】:

  • 这确实是答案!谢谢!
【解决方案2】:

我已经很久没有使用 Classic ASP 和 SDL Tridion,但请仔细检查以下内容

  • 链接服务是否在服务器上运行?
  • 检查您的 cd_licenses.xml 文件是否到位
  • 验证您有正确的 cd_link_conf.xml 和 cd_storage_conf.xml(我相信这些是从 5.3 更改的)
  • 在 Application 和 Tridion 事件日志中查找线索
  • Tridion 链接日志文件
  • 该错误代码似乎暗示链接 DLL 未正确注册。

目前我能想到的就这些了。

【讨论】:

  • 听起来您可能有一个旧的链接配置文件 - 尝试从安装程序复制默认文件,然后再次设置您的实现特定值
  • 谢谢。我现在的日志文件中没有错误,但问题仍然存在。使用 edit4 更新问题。
  • Kevin,您是否使用 Linking Windows 服务来解析您的链接?
  • @RamG,我必须安装旧版 cd_broker、cd_link 和 cd_wai。是的,它们作为 Web 服务运行。
  • 检查修补程序:CD_2011.1.0.78355。似乎接近您的问题。
【解决方案3】:

我没有意识到 2011 实际上对配置文件进行了模式验证,但无论如何,现在错误很明显了。我建议您自己在 XML 编辑器(例如 XML Spy)中进行验证。那应该准确指出配置文件有什么问题。

要定期检查您的配置,您可能会发现按照here 所述编写脚本很有趣。

【讨论】:

  • 谢谢。我已经修复了验证错误,它们似乎不相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 2020-11-08
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多