RetryerRequiredException in Sitecore shell



有人在 Sitecore shell 中体验过这种RetryerRequiredException吗?当我想发布项目或重建链接数据库(或任何需要保存到数据库的内容)时,我在测试环境中收到此异常(本地没有问题)。

我正在使用 Oracle 后端运行 SC7.2(修订版 141226)。web.config 中的重试器元素被禁用。

这是异常消息:

Retryer required for database operation. You need to wrap code into Factory.GetRetryer().Execute<int>(() => {}) context.

和堆栈跟踪:

[RetryerRequiredException: Retryer required for database operation. You need to wrap code into Factory.GetRetryer().Execute<int>(() => {}) context.]
   Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateTransaction() +354
   Sitecore.Data.Security.Accounts.SqlMembershipUser.UpdateProperties(String propertyNames, String propertyValues, Byte[] binaryValues) +62
   Sitecore.Data.Security.Accounts.SqlProfileProviderBase.SetPropertyValues(SettingsContext sc, SettingsPropertyValueCollection properties) +611
   System.Configuration.SettingsBase.SaveCore() +474
   System.Configuration.SettingsBase.Save() +104
   System.Web.Profile.ProfileBase.SaveWithAssert() +42
   System.Web.Profile.ProfileBase.Save() +122
   Sitecore.Security.UserProfile.Save() +266
   Sitecore.Web.UI.HtmlControls.Registry.SetValue(String key, String value) +222
   Sitecore.Shell.Applications.ShellForm.ShowDatabaseName(String visible) +93
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +76
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +211
   Sitecore.Shell.Framework.Commands.MethodCommandProcessor.Invoke(PipelineArgs args) +534
   Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) +398
   Sitecore.Pipelines.Pipeline.Start(PipelineArgs args, Boolean atomic) +366
   Sitecore.Shell.Framework.Commands.MethodCommand.Execute(CommandContext context) +632
   Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) +547
   System.Web.UI.Control.PreRenderRecursiveInternal() +113
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4297

编辑 1:

我也尝试启用重试器配置元素,但这会导致完全相同的异常。

编辑2:

最近发生的一件事发生了变化,那就是从 7.2 修订版140526升级到141226版。在发行说明中,我看到:

Sitecore 配置已更改为使用不同的重试程序 实例,以便活动重试器用于 数据库不会阻止使用其他数据库。(422504)

但是相应的 web.config 不会显示与此相关的更改。

最终将此问题提交给 support.sitecore.com,这显然是一个错误。解决方法是注释掉配置中的整个重试器元素:

<!--retryer disabled="true" type="Sitecore.Data.DataProviders.Retryer, Sitecore.Kernel">
      <param desc="Number of tries">6</param>
      <param desc="Interval between tries">00:00:00.500</param>
      <param desc="Log each exception (should be used for debug only)">true</param>
    </retryer-->

最新更新