有人在 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-->