以下是我尝试通过http://validator.w3.org/或facebook open graph调试器等验证程序运行我的网站时收到的堆栈跟踪错误。问题是,页面似乎在浏览器或移动应用程序Web视图中加载得很好。我能看到此错误的唯一方法是让验证器显示错误页面(选项)。有关如何读取堆栈跟踪的任何建议?我看到对我的一个控制器Literrater.Controllers.BookController.Index(Int32 id, String slug)
的引用,但我没有改变任何东西,它曾经工作,并且它在浏览器中工作正常。所以,我很困惑。我是否需要检查重定向发生的事情?
以下页面有问题。 http://literrater.azurewebsites.net/book/33625/birdsong-a-novel-of-love-and-war
[RuntimeBinderException: Cannot convert null to 'bool' because it is a non-nullable value type]
CallSite.Target(Closure , CallSite , Object ) +115
System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site, T0 arg0) +661
Literrater.Controllers.BookController.Index(Int32 id, String slug) +13725
lambda_method(Closure , ControllerBase , Object[] ) +146
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +182
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +50
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +58
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225
System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225
答案 0 :(得分:1)
此时,您的页面未加载并产生错误:
Exception Details: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot convert null to 'bool' because it is a non-nullable value type
Source Error:
Line 32: <div class="status-wrapper">
Line 33: <h2 class="sub-title">Collections</h2>
Line 34: @{Model.CollectionVM.FacebookStatus = ViewBag.FacebookStatus;}
Line 35: @Html.Partial("_MiniBookStatus", Model.CollectionVM)
Line 36:
Source File: d:\home\site\wwwroot\Views\Book\Index.cshtml Line: 34
看起来您可能没有初始化控制器中的ViewBag.FacebookStatus
值。使用这些ViewBag值,如果您没有在所有代码路径中设置值,那么您可能会遇到这样的情况:null
。
举个例子:
protected ActionResult Test()
{
ViewBag.SomeString = string.Empty;
ViewBag.SomeBool = false;
//some code
if (condition)
{
ViewBag.SomeBool = true;
}
else
{
ViewBag.SomeString = "Yea I'm a string!";
}
return View();
}
最好是初始化ViewBag值,否则它会在Razor视图中回来咬你,因为Intellisense不会捡起它,也不会导致构建错误或警告。