我们的测试服务器上存在MacroScripts问题。该应用程序在本地工作,代码/数据库在两者之间应该是相同的。
无法渲染大多数MacroScripts,而不是只渲染一两个。
加载MacroEngine脚本时出错(文件:Breadcrumb.cshtml)
错误日志中的堆栈跟踪显示:
2014-12-01 15:02:06,308 [22] WARN Umbraco.Web.Routing.DefaultUrlProvider -[Thread 53] Couldn't find any page with nodeId=1658. This is most likely caused by the page not being published.
2014-12-01 15:02:06,323 [22] WARN umbraco.macro - [Thread 53] Error loading MacroEngine script (file: Breadcrumb.cshtml, Type: ''. Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'umbraco.MacroEngines.DynamicNodeList' does not contain a definition for 'Any'
at CallSite.Target(Closure , CallSite , Object )
at ASP._Page_macroScripts_Breadcrumb_cshtml.Execute() in d:\HTTP\Development\Sodexo\MoneyBoostPhase4\MacroScripts\Breadcrumb.cshtml:line 25
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.WebPages.WebPage.ExecutePageHierarchy(IEnumerable`1 executors)
at System.Web.WebPages.WebPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at umbraco.MacroEngines.RazorMacroEngine.ExecuteRazor(MacroModel macro, INode currentPage)
at umbraco.MacroEngines.RazorMacroEngine.Execute(MacroModel macro, INode currentPage)
at umbraco.macro.loadMacroScript(MacroModel macro)
at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId)
我是ASP的新手,这个问题令我感到困惑,因为它工作正常,但不是在开发服务器上!
非常感谢任何帮助。
答案 0 :(得分:0)
部署Umbraco代码时,还需要确保在目标服务器上正确设置元数据。看起来目标服务器没有为您的BreadCrumb设置宏 - 即使它确实具有breadcrumb.cshtml的剃刀代码。您是否还将所有开发元数据添加到此临时服务器(文档类型,模板,宏,数据类型等)?
如果您已设置了元数据(文档类型,模板,宏,数据类型等),那么最可能的问题是app_data \ umbraco.config文件已缓存&过时了。所以删除它,也删除你的检查索引(在相同的文件夹或子文件夹中)&给你的应用程序池重新启动 - umbraco将重建其缓存的文件&一切都会聚集在一起。
此外,您的错误消息表明某些节点未发布 - 这也无济于事。
答案 1 :(得分:0)
错误并不是说breadcrumb宏文件不存在 - 而是导致错误
' umbraco.MacroEngines.DynamicNodeList'不包含'任何'的定义在Breadcrumb.cshtml:第25行
另外,没有人直接提到过数据库,这是所有内容和“元数据”的所在地。被储存了。
很有可能新的内容/文档类型/数据类型/等已添加到本地数据库,并且尚未部署到Umbraco中的实时部署,通常也包括数据库更改。
现在您知道错误的位置,您需要进行调试。