处理asp.net MVC控制器构造函数中发生的异常

Jas*_*son 5 asp.net asp.net-mvc constructor controller exception

处理控制器构造函数中发生异常的最佳方法是什么?

我能想到的就是使用Application_OnError()或在我的ControllerFactory中放一个try/catch.

这些解决方案似乎都不理想.Application_OnError是广泛的 - 我在网站中有一些非mvc内容,它有自己的错误处理.

使用try/catch块似乎有点hacky.

如果我正在提供不同的内容类型-html/text/json/rss ....我希望能够在action方法中处理异常,而不必编写各种条件来确定哪种错误要发球的消息.

我在这里遗漏了什么,还是有其他人处理过这个问题?

wom*_*omp 7

如果您ControllerFactory在创建控制器时首先发生异常,则无法在操作方法中处理异常.

我个人只是做一个try/catch,实例化一些错误处理控制器,并通过它来路由请求.

一个更好的问题是 - 你的控制器如此依赖于什么不被满足,他们必须在构建时抛出异常?表面上看,简单地创建控制器不应该是异常的巨大来源.如果是,也许你可以看一下懒惰地在动作方法(而不是构造函数)中实例化依赖关系,并实现一种ErrorHandlingController方法.这会将异常"向下"推入控制器本身,因此您可以采用更加以控制器为中心的方法来处理它们.