12

我有一个 Web 应用程序在我的计算机上没有给我任何问题,但是当我将它部署到服务器时出现此错误。它没有给我任何要检查的源代码行,我也不知道为什么会发生

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
4

2 回答 2

3

我遇到了同样的问题。不幸的是,堆栈跟踪在这种情况下并不是很有帮助。在视图中肯定会发生异常,在我的情况下是什么:

@Model.SomeProperty.Trim()

并且 Model.SomeProperty 为空。因为没有办法调试它;我推荐二分法:

  • 将您的视图保存在其他地方
  • 从您的视图中删除一个接一个的逻辑部分
  • 每次删除后保存您的视图并重新测试
  • 如果异常不再可重现,则 NullReferenceException 发生在您已删除的块中;因此将其添加回来并删除此块内的逻辑部分,直到您隔离导致异常的行

我知道它很蹩脚,但我没有找到其他方法 - 顺便说一句。这就是我在视图中做控制器工作所得到的。

于 2013-09-27T16:41:06.607 回答
1

转到源文件的第 0 行:

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

然后,使用它来查明代码块中发生异常的确切位置:

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

检查:

  1. 您已经启动了您正在操作的变量。
  2. 自将其部署到服务器后,您正在使用的变量并未变为null 。
  3. 您没有使用范围之外的变量。
于 2013-07-10T19:37:36.793 回答