C# Umbraco剃须刀模板错误

C# Umbraco剃须刀模板错误,c#,content-management-system,razor,umbraco,C#,Content Management System,Razor,Umbraco,我不熟悉Umbraco中的Razor模板(一般来说),但我更喜欢使用它而不是XSLT文件。然而,我遇到了一个我不知道如何解决的问题。我得到以下信息: An unknown error occured while rendering the following code: System.NullReferenceException: Object reference not set to an instance of an object. at RazorEngine.Dynamic.baeff

我不熟悉Umbraco中的Razor模板(一般来说),但我更喜欢使用它而不是XSLT文件。然而,我遇到了一个我不知道如何解决的问题。我得到以下信息:

An unknown error occured while rendering the following code:
System.NullReferenceException: Object reference not set to an instance of an object. 
at RazorEngine.Dynamic.baeffbebc.Execute() 
at RazorEngine.Templating.TemplateService.Parse[T](String template, T model, String name) 
at umbraco.MacroEngines.RazorEngine.GetResult(String cacheIdentifier, String template, INode currentPage, String& result)
我的宏如下所示:

@using System
@using uComponents.Core
@using uComponents.Core.uQueryExtensions
@using System.Linq
@using umbraco.NodeFactory
@helper NoPictures()
{
  <li>Pictures coming soon!</li>
}

@helper Pictures(String crop)
{
  <li><a rel="photos" href="@crop" title="test">
    <img src="@crop" class="shadow hovershadow"></a></li>
}
@{
   var n = Node.GetCurrent();
   var pictures = n.GetProperty("pictures").Value;
   if(pictures.Length <= 0)
   {
     NoPictures();
   }
   else
   {
     var pictureNodes = pictures.Split(',');

     foreach (var pictureNode in pictureNodes)
     {
       var node = new Node(Convert.ToInt32(pictureNode));
       var photoId = node.GetProperty("picture").Value;
       var photo = uComponents.Core.uQuery.GetMedia(Convert.ToInt32(photoId));
       var crop = MediaExtensions.GetImageCropperUrl(photo, "umbracoFile", "wide");
       Pictures(crop);
     }
   }
}
@使用系统
@使用uComponents.Core
@使用uComponents.Core.uQueryExtensions
@使用System.Linq
@使用umbraco.NodeFactory
@辅助图片()
{
  • 照片马上就要来了
  • } @助手图片(字符串裁剪) {
  • } @{ var n=Node.GetCurrent(); var pictures=n.GetProperty(“pictures”).值;
    如果(pictures.Length好的话,我的最终代码是:

    @using System
    @using uComponents.Core
    @using uComponents.Core.uQueryExtensions
    @using System.Linq
    
    @{
       var n = uQuery.GetCurrentNode();
       var pictures = n.GetProperty("pictures").Value;
       if(pictures.Length > 0)
       {
         var pictureNodes = pictures.Split(',');
    
         foreach (var pictureNode in pictureNodes)
         {
           var node = uQuery.GetNode(Convert.ToInt32(pictureNode));
           var photoId = node.GetProperty("picture").Value;
           var photo = uQuery.GetMedia(Convert.ToInt32(photoId));
           var crop = photo.GetImageCropperUrl("imageCropper", "wide");
           <li><a rel="photos" href="@crop" title="@node.GetProperty("title").Value">
           <img src="@crop" height="150px" width="150px" class="shadow hovershadow"></a></li>
         }
       }
       else
       {
         <li>Pictures coming soon!</li>
       }
    }
    
    @使用系统
    @使用uComponents.Core
    @使用uComponents.Core.uQueryExtensions
    @使用System.Linq
    @{
    var n=uQuery.GetCurrentNode();
    var pictures=n.GetProperty(“pictures”).值;
    如果(图片长度>0)
    {
    var pictureNodes=pictures.Split(',');
    foreach(pictureNodes中的变量pictureNode)
    {
    var node=uQuery.GetNode(Convert.ToInt32(pictureNode));
    var photoId=node.GetProperty(“图片”).Value;
    var photo=uQuery.GetMedia(Convert.ToInt32(photoId));
    var-crop=photo.GetImageCropperUrl(“imageCropper”、“wide”);
    
  • } } 其他的 {
  • 照片马上就要来了
  • } }

    代码变化不大,但很明显,在之前运行宏时,我在某个地方出现了一个错误。无论我如何更改脚本,错误始终存在。结果表明,Umbraco的Razor缓存太过激进或存在错误,因此在对脚本进行更改时,缓存没有失效。为了解决这个问题,我d以回收IIS中的应用程序池。现在一切正常。

    如果我有缓存问题,我右键单击内容根节点并点击“重新发布整个站点”。如果这是一个真正的缓存问题,请删除App_Data/umbraco.config文件并点击站点中的任何页面。缓存文件将重新生成。