如果我的项目使用不正确,不完整或缺失的连接字符串进行部署,我希望应用程序启动检查数据库连接,如果没有,则将所有请求定向到某种类型的DatabaseConnectionError页面,我的选择?我不认为有一个特定的http错误代码可以适应这个错误,我目前没有使用web.config为所有错误定义一个通用的catch。
我确实
/// <summary>
/// from http://www.davidjuth.com/asp-net-mvc-error-handler.aspx
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
protected void Application_Error(object sender, EventArgs args)
{
Exception ex = Server.GetLastError();
using (var crashFile = new System.IO.StreamWriter(Server.MapPath("~/App_Data/Crash_" + DateTime.UtcNow.ToString("yyyyMMdd") + ".log")))
crashFile.WriteLine("<crash><time>" + DateTime.UtcNow.TimeOfDay.ToString() + "</time><url>" + HttpContext.Current.Request.Url + "</url><exception>" + ex.ToString() + "</exception></crash>");
}
但它似乎不允许我用页面回复请求。
答案 0 :(得分:2)
您可以重定向到Application_Error
回调中的自定义错误页面:
protected void Application_Error(object sender, EventArgs args)
{
...
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Redirect("~/error.html");
}
如果您不想重定向,也可以使用context.Server.Transfer
并设置一些特殊的http错误代码,例如500.