asp.net - 从Application_Error中执行 Controller Action 将引发InvalidOperationException(未找到 View )

标签 asp.net asp.net-mvc-3 error-handling

我正在尝试安装一个很好的全局异常处理机制,以集中管理通用引发的异常以及404、500,...错误;也就是说,无需针对不同的错误实现不同的错误页面/错误处理解决方案。

为此,我尝试implement this example从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作为 View 引擎,并且模板确实存在。我实现了一个名为ErrorsController的自定义HandleErrorsAttribute,通过它,一切正常进行。仅当从Application_Error方法调用(基本上是复制粘贴)代码时,它才失败。

尝试在项目中创建NotFound.aspx View 会产生相同的异常(exception),只是它仅将favicon.ico列为搜索位置。

如最初编写的那样,将代码移入Application_EndRequest会产生相同的结果

任何对此的解释将不胜感激。

最佳答案

Google将我引到an issue on Jetbrain's issue tracker。显然,我的R#缓存被损坏了。清除它并重新启动Visual Studio有所帮助。 “清除缓存”似乎是解决问题的通用方法。 :|

How to clean caches:
1. Menu: RESHARPER->Options->General->Clear caches
2. Restart Visual Studio

关于asp.net - 从Application_Error中执行 Controller Action 将引发InvalidOperationException(未找到 View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144031/

相关文章:

class - 错误: Compile Error: sObject type 'KnowledgeArticleVersion' is not supported.

asp.net - IIS 在哪里(如何?)存储自定义应用程序池标识?

asp.net - 在 ASP.NET 中使用对象标签

c# - 如何使用DataContext.ExecuteCommand 获取执行后的存储过程返回值?

php - 调用DefaultApi-> flightInspirationSearch : [400] Error connecting to the API时发生异常

git - 如何将git merge 失败输出到文件

c# - 导出到 excel 的 RadGrid telerik 问题

c# - 动态 SQL 语句的新手

asp.net-mvc-3 - MVC3 Razor : Is it Possible to Render a Legacy ASCX?

jquery - MVC 3 Controller 操作不接受来自 JQuery .POST 的值