MVC 2 Catch-All для строки подключения отсутствует или ошибка подключения - PullRequest
0 голосов
/ 13 апреля 2010

В случае, если мой проект развернут с неверной, неполной или отсутствующей строкой подключения, я хотел бы проверить запуск приложения для подключения к БД, и, если ее нет, перенаправить все запросы на какую-либо страницу DatabaseConnectionError мои варианты? Я не думаю, что есть конкретный код ошибки http, который бы соответствовал этой ошибке, и в настоящее время я не использую web.config, чтобы определить универсальный перехват всех для всех ошибок.

У меня есть

    /// <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>");

    }

но, похоже, я не могу ответить на запрос страницей.

1 Ответ

2 голосов
/ 13 апреля 2010

Вы можете перенаправить на пользовательскую страницу ошибки в обратном вызове 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, если вы не хотите перенаправлять.

...