每30秒记录一次“ERROR Umbraco.Core.Dynamics.DynamicInstanceHelper”错误

时间:2016-12-12 13:10:23

标签: c# razor umbraco

我目前在Umbraco中遇到以下错误:

2016-12-12 11:45:56,665 [P10884/D3/T68] ERROR Umbraco.Core.Dynamics.DynamicInstanceHelper - An error occurred finding and executing extension method "FirstOrDefault" for type "Umbraco.Web.Models.DynamicPublishedContent". Types searched for extension methods were Umbraco.Web.Models.DynamicPublishedContent.
    System.MissingMethodException: Method 'Umbraco.Web.Models.DynamicPublishedContent.FirstOrDefault' not found.
       at Umbraco.Core.Dynamics.DynamicInstanceHelper.FindAndExecuteExtensionMethod[T](IRuntimeCacheProvider runtimeCache, T thisObject, Object[] args, String name, IEnumerable`1 findMethodsOnTypes)
       at Umbraco.Core.Dynamics.DynamicInstanceHelper.TryInvokeMember[T](IRuntimeCacheProvider runtimeCache, T thisObject, InvokeMemberBinder binder, Object[] args, IEnumerable`1 findExtensionMethodsOnTypes)

整天记录大约每30秒一次又一次。我想知道是否有人知道这意味着什么?该网站似乎运行良好,但我有点担心,因为我的其他Umbraco安装都没有这个特殊的错误。

1 个答案:

答案 0 :(得分:2)

问题是您在动态上调用扩展方法。有关详情,请参阅这些帖子他们对我有帮助。

你应该可以使用

Enumerable.FirstOrDefault(myListOfDynamicStuff);

而不是

myListOfDynamicStuff.FirstOrDefault();

扩展方法在编译时绑定。为了正确绑定,类型必须匹配。在您的情况下,您的myListOfDynamicStuff变量需要实现IEnumerable。但是,您的myListOfDynamicStuff是动态的,且类型不匹配。我喜欢在umbraco中使用更强类型的IPublishedContent。您可以获取当前页面Model.Content,您可以使用umbracoHelper,Umbraco.TypedContent()按ID获取节点。

Umbraco为动态实现了自己的FirstOrDefault,而不是扩展方法。我的猜测是你要么在web.config中缺少一个dll,一个using语句或某种类型的引用。我会下载与您的网站匹配的umbraco香草副本,并对所有文件进行比较。我最喜欢的工具是Beyond Compare。请特别注意/ bin中的dll以及/ Views目录中的根Web.config或Web.config中缺少的任何内容。