2010-01-06 52 views
2

我正在确保我们的MVC应用程序捕获所有异常并将它们报告给我们,以便我们可以保持在错误之上。我已经了解到,我需要Global.asax Application_Error事件中的一些代码来捕获永远不会传递给Controller的异常,并且在我们的自定义基本控制器中,我们重写了OnException()方法,这似乎适用于Controller异常。我想知道的是,View异常会回退到那个问题还是还有其他一些事情需要执行以捕获所有这些问题?Controller中的OnException()会捕获View中的异常吗?或者如何捕获它们?

+0

你可以在你的视图中只放一个来测试它,不是吗? – hometoast 2010-01-06 16:19:42

+2

我可以做到这一点,同时发布一个SO问题,将我的机会加倍计算出来,但也从有经验的人那里得到一些见解,可能学习我可能遇到的障碍,我不期望... – BigOmega 2010-01-06 16:22:31

回答

0

瑞恩,我们已经通过在我们的自定义控制器基类中实现ErrorAttribute来解决这个问题(这样我们只会把它放在整个应用程序中),这样用户就不会看到讨厌的黄色死亡屏幕。

要记录未处理的错误我建议使用ELMAH作为日志记录错误解决方案,它非常不引人注目(只是配置web.config),它有一个非常漂亮的界面来过滤,搜索,你甚至可以订阅它通过RSS。

祝你好运!

+0

嗯我的web.config如何知道Elmah.DLL在哪里?我查看了不同的web.config条目,并且我没有看到任何东西可以告诉它它在哪里... – BigOmega 2010-01-06 19:20:55

+0

或者我确实必须做的不仅仅是web.config,而是将它作为项目中的参考添加进去? – BigOmega 2010-01-06 19:29:38

+0

好的,我尝试让elmah工作,但它不会,多么令人沮丧,它似乎也有这么多的承诺,我完全按照方向,但无济于事 – BigOmega 2010-01-06 20:06:41