0

一般的なスロー例外と404、500、...エラーを一元的に管理する優れたグローバル例外処理メカニズムをインストールしようとしています。つまり、さまざまなエラーページ/さまざまなエラーのエラー処理ソリューションを実装する必要はありません。

そのために、Global.asax.csのApplication_Errorメソッド内からErrorsControllerを呼び出すためのこの例を実装しようとしました。

ただし、コードを実行すると、次の例外が発生します。

System.InvalidOperationException was unhandled by user code
  HResult=-2146233079
  Message=The view 'NotFound' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Errors/NotFound.aspx
~/Views/Errors/NotFound.ascx
~/Views/Shared/NotFound.aspx
~/Views/Shared/NotFound.ascx
/favicon.ico
  Source=System.Web.Mvc
  StackTrace:
       at System.Web.Mvc.ViewResult.FindView(ControllerContext context)
       at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
       at System.Web.Mvc.Controller.ExecuteCore()
       at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
       at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
       at Cider.MvcApplication.Application_Error(Object sender, EventArgs e) in c:\Users\cornelius.kopp\Projects\SD Cider\Cider\Global.asax.cs:line 88
       at System.EventHandler.Invoke(Object sender, EventArgs e)
       at System.Web.HttpApplication.RaiseOnError()
  InnerException: 

興味深いのは、ビューエンジンとしてRazorを使用していて、テンプレートが確実に存在することです。HandleErrorsAttribute私はErrorsControllerと呼ばれるカスタムを実装し、それを通してすべてがスムーズに機能しました。(基本的にコピーアンドペーストされた)コードがApplication_Errorメソッドから呼び出された場合にのみ、失敗しました。

プロジェクトでNotFound.aspxビューを作成しようとすると、同じ例外が発生しましたが、検索された場所としてfavicon.icoのみがリストされているだけです。

最初に記述されたように、コードをApplication_EndRequestに移動すると、同じ結果が得られました。

これについての説明をいただければ幸いです。

4

1 に答える 1

1

Googleは、Jetbrainの課題追跡システムに関する問題に私を導きました。どうやら私のR#キャッシュはどういうわけか壊れていました。それをクリアしてVisualStudioを再起動すると役に立ちました。「キャッシュのクリア」は、問題に対する一般的に有用なアプローチのようです。:|

How to clean caches:
1. Menu: RESHARPER->Options->General->Clear caches
2. Restart Visual Studio
于 2012-10-31T10:48:56.523 に答える