我怎么读这个堆栈跟踪我只是从刮刀那里得到的?

时间:2014-02-07 02:53:27

标签: asp.net-mvc-4 stack-trace

以下是我尝试通过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

1 个答案:

答案 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不会捡起它,也不会导致构建错误或警告。