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 は null でした。デバッグする方法がないため。バイナリ分割アプローチをお勧めします:

  • ビューを別の場所に保存する
  • ビューから論理パーツを 1 つずつ削除する
  • 削除するたびに、ビューを保存して再テストします
  • 例外が再現できなくなった場合は、削除したブロックで 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 に答える