2010-09-09 47 views
0

我几乎不好意思问这个问题,但这里就是这样。昨天我正在测试一个应用程序,这个应用程序几个星期后即将投入生产,当时我的一个同事触发了一个不寻常的错误。基本上,她在数据库连接的同时视图迭代了一个IQueryable集合(在partialview中)。现在,对此负责的控制器有错误陷阱,我预计这会引发警告。但是,基本上发生的是黄色的.net错误页面显示错误发生的地方。现在,幸运的是这仍然在测试中,所以我们可以做出必要的修改来解决这个问题,而且这是一个真正的边缘案例,所以这种类型的错误可能永远不会发生。当数据库离线时在视图级别捕获错误

但是,有没有人有解决方案来捕捉这样的错误,并在这个事件中呈现一个合理的404页面?或者在我们的防守编程和try/catch块中可能忽略了控制器中的某些内容?

希望有人已经迈过这道坎前和天赋退出...

+0

因此,您的模型强类型为IQuerable <>?它在视图上执行? – Martin 2010-09-09 13:26:34

+0

Martin,是的,这正是场景 – 2010-09-09 18:19:01

+0

那么为什么不在控制器中优化模型并捕获那里的错误,然后将IEnumerable <>或IList <>传递给模型? – Martin 2010-09-10 12:15:47

回答

0

如果我只注重错误页面没有找到处理上有SO约404处理,但在你的情况下,该不该一些重大问题”不是404,而是500 - 实际上并不重要,但你仍然应该区分这两者。对于这两个中的每一个,你都可以制作一个漂亮的自定义错误页

我按照cottsak的回答在this SO问题以及其他用户/评论者在同一问题中所做的更正。我认为这是比我接受的答案更好的解决办法。

但是,它可能是你正在处理一些不该发生的事情。 “她拉数据库连接”是什么意思?这可能意味着您的网站未正确设置以处理多个用户请求。我会在ASP.NET MVC应用程序中推荐“per request”数据库连接/数据库上下文范围。

+0

嗨马雷。 '拉连接'我的意思是说,她从SQL管理员字面上的数据库脱机。这是故意的,但抛出了我们没有想到的错误。我现在就来看看那个cottsak问题。我们的数据库连接通过亚音速3与sqlserver通信来提供服务,并按照您的设置 - 即“每个请求” – 2010-09-09 11:35:32