C# 如何调试NancyFx中的视图错误?

C# 如何调试NancyFx中的视图错误?,c#,razor,nancy,C#,Razor,Nancy,我有一个项目,我正在移植ASP.NETMVC中的一些代码以使用Nancy。在新项目中,我将继续使用Razor作为视图引擎。我的一个观点是给我以下的例外: RuntimeBinderException: Cannot perform runtime binding on a null reference at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecut

我有一个项目,我正在移植ASP.NETMVC中的一些代码以使用Nancy。在新项目中,我将继续使用Razor作为视图引擎。我的一个观点是给我以下的例外:

RuntimeBinderException: Cannot perform runtime binding on a null reference
at CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
at RazorOutput.RazorView.Execute()
at Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at Nancy.ViewEngines.Razor.RazorViewEngine.<>c__DisplayClass27.<RenderView>b__26(Stream stream)
at Nancy.ViewEngines.Razor.HtmlHelpers`1.Partial(String viewName, Object modelForPartial)
at RazorOutput.RazorView.Execute()
at Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(String body, IDictionary`2 sectionContents)
at CallSite.Target(Closure , CallSite , Object , Object , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](CallSite site, T0 arg0, T1 arg1, T2 arg2)
at Nancy.ViewEngines.Razor.RazorViewEngine.<>c__DisplayClass27.<RenderView>b__26(Stream stream)
at Nancy.Responses.MaterialisingResponse.PreExecute(NancyContext context)
RuntimeBinderException:无法对空引用执行运行时绑定
目标(闭包、调用站点、对象)
在System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](调用站点,T0 arg0)
在RazorOutput.RazorView.Execute()处
Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(字符串体,IDictionary`2节内容)
目标(闭包、调用站点、对象、对象、对象)
在System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](调用站点,T0 arg0,T1 arg1,T2 arg2)
目标(闭包、调用站点、对象、对象、对象)
在Nancy.ViewEngines.Razor.RazorViewEngine.c__显示类27.b__26(流)
位于Nancy.ViewEngines.Razor.HtmlHelpers`1.Partial(字符串viewName,对象模型forpartial)
在RazorOutput.RazorView.Execute()处
Nancy.ViewEngines.Razor.NancyRazorViewBase`1.ExecuteView(字符串体,IDictionary`2节内容)
目标(闭包、调用站点、对象、对象、对象)
在System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid3[T0,T1,T2](调用站点,T0 arg0,T1 arg1,T2 arg2)
在Nancy.ViewEngines.Razor.RazorViewEngine.c__显示类27.b__26(流)
在Nancy.Responses.MaterialisingResponse.PreExecute(NancyContext上下文)

现在,从某种意义上说,这是一个很容易修复的错误:只是防止null被延迟,对吗?我的问题是我不知道我的模型和视图的哪些部分有问题。所以我想问的是,有没有办法从南希那里得到更好的错误信息?如果我能让它告诉我视图中的行号,或者它不能绑定的空对象的名称,这将大大简化调试。

我希望这比RazorEngine更有效,但我发现NancyFx也有同样的缺点。看到这仍然是2017年常见的剃须刀事件,真是令人失望

我的方法是为源文件名和行号添加一个属性,并添加代码手动更新这些属性。非常难看,这个数字不是对实际行号的引用,而是文件中的唯一标识符,但它确实提供了更多本地化信息

@{ Model.LineNumber = "62"; } <div>@Model.Example</div>
@{Model.LineNumber=“62”}@Model.Example
我很想知道是否有人在任何Razor解决方案中找到了更好的解决方案,可以在HttpContext之外运行