【发布时间】:2016-05-25 07:54:06
【问题描述】:
我正在使用 Umbraco CMS。我有以下型号:
public class LoyaltyPromo : RenderModel
{
public LoyaltyPromo(IPublishedContent content)
: base(content)
{
}
//properties removed for brevity
}
我想在UmbracoApiController 中使用这个模型。所以我这样做:
public class PromoServiceController : UmbracoApiController
{
public async Task<object> GetAll()
{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
IPublishedContent content = umbracoHelper.TypedContent(1050);
var list = new List<LoyaltyPromo>();
list.Add(new LoyaltyPromo(content));
return list;
}
}
不幸的是它不起作用,我得到了NullReferenceException:
发生错误。 你调用的对象是空的。 System.NullReferenceException 在 Umbraco.Web.Models.RenderModel..ctor(IPublishedContent 内容)在 LoyaltyOps.Models.LoyaltyPromo..ctor(IPublishedContent 内容)在 C:\Users\mkallingal\documents\visual studio 2015\Projects\LoyaltyOps\LoyaltyOps.Models\LoyaltyPromo.cs:第 13 行 LoyaltyOps.Controllers.PromoServiceController.d__0.MoveNext() 在 C:\Users\mkallingal\documents\visual studio 2015\Projects\LoyaltyOps\LoyaltyOps\Controllers\PromoServiceController.cs:line 32 --- 从上一个异常位置开始的堆栈跟踪结束 抛出---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()
我该如何解决这个问题?
【问题讨论】:
-
我认为您需要扩展您的代码示例,以便我们可以看到 LoyaltyPromo.cs:line 13,它说发生了空引用?
-
嗨@ProNotion,第13行是
public LoyaltyPromo(IPublishedContent content) : base(content) { } -
您正在使用硬编码的 id 获取已发布的内容节点,例如。 1050. 你确定这个id存在吗?
-
嗨@Mivaweb,是的,它存在。我从 Umbraco ->
Content->Promos-List(content name) -> Id (from thePropertiestab) 复制了它。IPublishedContent content = umbracoHelper.TypedContent(1050);返回内容的所有信息;它不为空。 -
我看到您正在使用异步任务,请在 stackoverflow 上查看此解决方案:stackoverflow.com/questions/23006976/…