Не могу понять, почему я получаю это исключение nullReference в ASP MVC при загрузке страницы

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

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 


[No relevant source lines]

Source File: c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\a9dc635c\ccb3814\App_Web_item.cshtml.f0356b3c.uyw8roer.0.cs    Line: 0 

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.]
   ASP._Page__AssemblyResource_MyProject_Web_Mvc__Version_1_0_0_0__Culture_neutral__PublicKeyToken_null_Views_LeagueGlobal_Item_cshtml.Execute() in c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\a9dc635c\ccb3814\App_Web_item.cshtml.f0356b3c.uyw8roer.0.cs:0
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +279
   System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +125
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +195
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +383
   System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +32
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +977396
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +977396
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +265
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +964636
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +28
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +67
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +53
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +42
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +20
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +53
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

Ответ 1

Я столкнулся с той же проблемой. К сожалению, трассировка стека в этом случае не очень полезна. Исключение происходит точно в представлении, что это было в моем случае:

@Model.SomeProperty.Trim()

И Model.SomeProperty был нулевым. Поскольку нет способа его отладки; Я рекомендую подход с двоичным расщеплением:

  • сохранить ваше местоположение в другом месте
  • удалять по отдельности логические части из вашего представления
  • после каждого удаления сохранить ваш просмотр и повторить проверку
  • Если исключение больше не воспроизводится, исключение NullReferenceException произошло в удаляемом вами блоке; поэтому добавьте его обратно и удалите логические части внутри этого блока, пока не выделите строку, вызывающую исключение.

Его хромой я знаю, но я не нашел другого пути - кстати. это то, что я получил для выполнения заданий контроллера.

Ответ 2

Перейдите в строку 0 вашего исходного файла по адресу:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Временные файлы ASP.NET\root\a9dc635c\ccb3814\App_Web_item.cshtml.f0356b3c.uyw8roer.0.cs

Затем используйте это, чтобы указать, где именно исключение происходит в вашем кодовом блоке:

try
{
   ...
}
catch (NullReferenceException ex)
{
      ShowMessageBox("Error" + ex.Message);
}

Убедитесь, что:

  • Вы инициировали переменные, с которыми вы манипулируете.
  • Переменные, которые вы используете, не стали null с момента его развертывания на сервере.
  • Вы не используете переменные за пределами своей области.