我最近加入了一个正在进行的asp.net mvc项目,其中在处理控制器中的异常时没有多少一致性;一些开发人员将数据返回给客户端以让用户知道什么是错误的,其他人将它们扔回去,以便他们到达处理和记录它们的服务器级处理程序 - 而不会让用户知道怎么了最新的。
我觉得这两种方法本身都是错误的,需要相互补充;我坚持的是如何做到这一点。我假设最终的异常处理程序/记录器可以在捕获特别讨厌的东西时将用户重定向到错误网页,但这会将机制限制为严重的东西。
当我发现异常时,我正在寻找一种方法同时执行“抛出”和“返回...”,因此我将其排序并记录在服务器端并获取数据客户端我告诉用户有一个打嗝。
我对asp.net的专业知识非常有限,虽然我相信我理解mvc足以让它成为一个问题,但这是一种“什么是最佳实践?”与那些不打扰最佳实践的人一起工作的人的问题。
答案 0 :(得分:2)
有一个名为Elmah的好项目用于记录ASP.NET应用程序中的错误和异常。你可以找到它here
ELMAH(错误记录模块和处理程序)是一个应用程序范围 错误日志记录工具,完全可插拔。有可能 动态添加到正在运行的ASP.NET Web应用程序,甚至全部 一台机器上的ASP.NET Web应用程序,无需任何操作 重新编译或重新部署。
一旦ELMAH被放入正在运行的Web应用程序中 如果配置得当,您将获得以下设施 更改代码的一行:
- 记录几乎所有未处理的异常。
- 远程网页 查看重新编码的异常的整个日志。
- 要远程查看的网页 任何一个记录异常的完整细节,包括彩色堆栈 痕迹。
- 在许多情况下,您可以查看原始的黄色屏幕 ASP.NET为特定异常生成的死亡,即使是 customErrors模式已关闭。
- 每个错误的电子邮件通知 它发生的时间。
- 日志中最近15个错误的RSS提要。
答案 1 :(得分:0)
我正在处理的MVC应用程序实现Application_Error
中的Global.asax
来处理从应用程序抛出的异常,然后将用户重定向到标准错误页面。错误页面的Controller处理日志记录,并显示有关错误的足够信息,以便支持人员在系统中查找其会话并帮助解决任何问题。