如何优雅地处理ASP.NET MVC 4中的数据库连接?

时间:2012-12-04 14:11:21

标签: c# asp.net-mvc database error-handling

在尝试连接到可能已关闭的数据库或在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)。

谢谢。

3 个答案:

答案 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