2015-05-06 3 views
2

У меня есть проект, в котором я переношу некоторый код из ASP.Net MVC, чтобы вместо него использовать Нэнси. Я продолжаю использовать Razor для механизма просмотра в новом проекте. И один из моих взглядов дает мне следующее исключение:Как отладить ошибку представления в NancyFx?

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) 

Теперь, это в некотором смысле достаточно просто ошибки исправить: просто предотвратить нуль от того deferenced, верно? Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, какие части моей модели и ее проблемы возникают. Так что я спрашиваю, есть ли способ получить лучшее сообщение об ошибке из Нэнси? Если бы я мог заставить его указать мне номер строки в представлении или имя нулевого объекта, с которым он не может связываться, это значительно упростит отладку.

ответ

0

Я надеялся, что это будет работать лучше, чем RazorEngine, но я вижу, что NancyFx имеет ту же слабость. На самом деле неутешительно видеть, что это все еще обычная Razor Thing в 2017 году.

Мой взлом заключался в том, чтобы добавить свойство для имени исходного файла и номера строки и добавить код, чтобы обновить их вручную. Действительно уродливое, и число было меньше ссылки на фактический номер строки и больше всего лишь уникального идентификатора в файле, но он дает вам более локализованную информацию.

@{ Model.LineNumber = "62"; } <div>@Model.Example</div> 

Я хотел бы услышать, если кто-нибудь нашел лучшее решение в любом решении Razor, который может выполняться за пределами HttpContext.

Смежные вопросы