在尝试连接到可能已关闭的数据库或在MVC 4中给出错误的连接字符串时,如何正常处理错误?
我在Web.config中有我的字符串,它访问数据库的方式只是在每个控制器中实例化从DBContext派生的类,如下所示:
private DBEntities db = new DBEntities("database");
如果数据库已启动并且一切正常,则此方法正常,但如果不正确,则我网站上的页面会显示以下错误:
Exception Details: System.ComponentModel.Win32Exception: The network path was not found
显然我不希望出现这种情况,我想要做的是try catch
错误并显示自定义错误页面(类似于404 Page Not Found)。
谢谢。
答案 0 :(得分:1)
这取决于private DBEntities db = new DBEntities("database");
的位置和调用的时间,但为什么不呢:
try {
private DBEntities db = new DBEntities("database");
} catch (Exception ex) {
//do something here
}
答案 1 :(得分:1)
在函数中进行初始化
private DBEntities db;
// then in your function attempt to initialise
try{
db = new DBEntities("database");
db.Connection.Open();
}
catch(Exception ex){
if(db.Connection != ConnectionState.Closed){
db.Connection.Close();
db.Dispose();
//go to error page
}
}
答案 2 :(得分:1)
首先添加一个' Error.cshtml'在共享视图文件夹中查看。给它一个模型类型
System.Web.Mvc.HandleErrorInfo
然后将以下内容添加到您的web.config文件
<system.web>
<customErrors mode="On" defaultRedirect="/Error" />
</system.web>
这将重定向到任何异常的错误视图。
现在只需设置错误页面样式。
我建议你按照其他帖子中的建议尝试{} catch {},只需重新抛出一个用户友好的消息 - 例如&#34;无法建立数据库连接。 #34;
这里有一个完整的讨论/解释:http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc