RuntimeBinderException,因为 Razor 中的空引用

本文关键字:引用 Razor 因为 RuntimeBinderException | 更新日期: 2023-09-27 18:35:21

因为这个刚刚开了一个账户。

我在Visual Studio上创建了一个空的Web项目(没有MVC,Forms或Web API),并且在调试这一行时:

@if (Session["GenCpN"] != null) { @Session["GenCpN"] }

对于我的默认.cshtml的布局文件(_GenLayout.cshtml),我遇到了以下异常:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException was unhandled by user code
  HResult=-2146233088
  Message=Cannot perform runtime binding on a null reference
  Source=Anonymously Hosted DynamicMethods Assembly
  StackTrace:
       at CallSite.Target(Closure , CallSite , Object , String , Object )
       at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
       at CallSite.Target(Closure , CallSite , Object , String , Object )
       at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
       at ASP._Page__GenLayout_cshtml.Execute() in C:'Users'PJ'OneDrive'Documents'Dev'BWC'WebApp'_GenLayout.cshtml:line 7
       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 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer)
       at System.Web.WebPages.WebPageBase.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer)
       at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
       at System.Web.WebPages.WebPageExecutingBase.WriteTo(TextWriter writer, HelperResult content)
       at System.Web.WebPages.WebPageBase.Write(HelperResult result)
       at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
       at System.Web.WebPages.WebPageBase.PopContext()
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
       at System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext)
  InnerException: 

顺便说一下,如果有帮助,当我为每个语句使用一行时,Visual Studio 会在右括号上中断。另外,我记得我的代码之前工作 - 除其他更改外 - 我在子文件夹的子文件夹中添加了一个新的 web.config 文件(以添加处理程序。我删除了该文件,但它仍然不起作用)。

我想这需要由专业人士回答,但我很感激任何答案,

谢谢!

更新1:我已经恢复了几项更改并删除了几个文件,但在此文件中仍然收到此错误。我还删除并重写了default.cshtml和_GenLayout.cshtml,仍然什么都没有。这以一种不可见的方式影响了解决方案。我发现了错误吗?

更新2:事实证明,一旦我删除了引用自定义类的后行,问题就会消失,但我仍然无法理解为什么会发生特定错误。我删除的行是:

<link rel="stylesheet" type="text/css" href="@App.uri("arg1", "arg2")" />

RuntimeBinderException,因为 Razor 中的空引用

OP 的"UPDATE 2"启发我在我自己的情况下用空的 RuntimeBinderException 查看路标错误之外,我修复了我的错误。

与其纠结于异常堆栈跟踪中指示的行(这很好),不如在其他地方(堆栈跟踪指示的行上方或下方)查找 null

我的情况很简单,在某些情况下,ViewBag.Title没有设置,因此当我试图使用它包含在元描述中时,它null