自从升级到ASP.NET MVC2以来,我们注意到Windows应用程序事件日志中包含以下条目:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 11/4/2010 3:29:16 PM
Event time (UTC): 11/4/2010 7:29:16 PM
Event ID: 2039870297302976340236
Event sequence: 6422
Event occurrence: 864
Event detail code: 0
...
Exception information:
Exception type: ArgumentException
Exception message: The parameters dictionary contains a null entry for parameter 'someParam' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Index(System.String, Int32)' in 'SomeNameSpace.SomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
请求很糟糕,所以我们收到了这个错误。很好,但我想在我的应用程序中处理这个问题,而不是让它泡出事件日志。有什么建议吗?
修改
看看this question的答案,设置Route Constraints来处理这个问题会更明智吗?
答案 0 :(得分:1)
这不是ASP.NET MVC特有的,但它是任何ASP.NET应用程序的正常行为。记录所有未公开的异常,这似乎是正常的。所以你需要处理它们。对于这种类型的异常,您确实可以使用路由约束并具有自定义404和500错误页面。
Global.asax中还有Application_Error
处理程序,可用于处理异常。对于控制器级异常,有[HandleError]
动作过滤器。