0

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

谢谢你。

4

3 回答 3

1

这取决于它在哪里private DBEntities db = new DBEntities("database");以及何时被调用,但为什么不只是:

try {
  private DBEntities db = new DBEntities("database");
} catch (Exception ex) {
  //do something here
}
于 2012-12-04T14:14:16.123 回答
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
}

}
于 2012-12-04T14:15:16.100 回答
1

首先在共享视图文件夹中添加一个“Error.cshtml”视图。给它一个模型类型 System.Web.Mvc.HandleErrorInfo

然后将以下内容添加到您的 web.config 文件中

<system.web>
  <customErrors mode="On" defaultRedirect="/Error" />
</system.web>

这将重定向到任何异常的错误视图。

现在只需设置错误页面的样式即可。

我建议您按照其他帖子中的建议尝试 { } catch { },在您的 catch 块中,使用用户友好的消息重新抛出 - 例如“无法建立数据库连接”。

相当完整的讨论/解释:http: //www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc

于 2012-12-04T14:21:21.380 回答