Я также рекомендовал бы Разработчику SQL Oracle, однако я нашел WinSQL быть довольно хорошим также. Разработчик SQL свободен, и WinSQL имеет версию сообщества, которая довольно устойчива, и работает хорошо против других платформ также (я также использую его для работы с Netezza).
Итак, во-первых, помните, что глобальная обработка ошибок должна быть крайней мерой, а классы контроллеров имеют специальный метод ошибок для ошибок;
protected virtual bool OnError(string actionName,
System.Reflection.MethodInfo methodInfo, Exception exception)
В рамках этого вы можете перенаправить на стандартный общий просмотр ошибок;
protected override bool OnError(string actionName,
System.Reflection.MethodInfo methodInfo, Exception exception)
{
RenderView("Error", exception);
return false;
}
Проблема с глобальной ошибкой приложения заключается в том, что оно не имеет понятия представлений или контроллеров, поэтому, если вы хотите перенаправить туда, вы должны использовать известный URL
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
System.Diagnostics.Debug.WriteLine(exception);
Response.Redirect("/Home/Error");
}
, но вам не нужно сделай это. Если вы установили страницу ошибок по умолчанию в web.config, тогда вам не нужно это перенаправление
<customErrors defaultRedirect="Home/Error" />
Однако, если вы не добавили представление ошибок в свой домашний контроллер, которого не существует, поэтому добавьте следующее в домашний контроллер
public ActionResult Error()
{
return View();
}
Затем (если вы разумны) вы должны поместить код обработки ошибок в метод Error (), так как именно там будут обнаруживаться все необработанные ошибки.
public ActionResult Error()
{
Exception exception = Server.GetLastError();
System.Diagnostics.Debug.WriteLine(exception);
return View();
}
И, наконец, помните, что по умолчанию вы не видите пользовательских ошибок, если подключаетесь к localhost! Поэтому вам нужно изменить это поведение
<customErrors mode="On" defaultRedirect="/Home/Error" />
IHttpHandler
, не отмеченного IRequiresSessionState
, то доступ к Session
завершится неудачно. Session [ «Тест»]
? Вы уверены, что ваш код действительно не работает? Вы можете попробовать File.Open и просто вывести некоторый текст (например, текущее время) в C: \ my-log.txt
, что немного более вероятно, чем использование Session
]. GetBaseException
бесполезен в этом случае (и вообще для ведения журнала), насколько я могу судить. Сообщение
имеет тип строка
- вызов .ToString ()
не требуется. В общем, я d настоятельно рекомендую избегать ToString ()
, где это возможно - если вы используете его, потому что не уверены в типе объекта, это должно быть красным флажком; выполнение конечного обхода системы типов может скрыть незаметные ошибки (например, DBNull.Value.ToString () == ""
). Для графического интерфейса пользователя встроенные типы предоставляют перегрузку .ToString (IFormatProvider)
, которая зависит от языка и региональных параметров и позволяет избежать проблем с переносимостью. Поскольку эта перегрузка также отсутствует в объекте
, она также позволяет избежать очень слабо типизированных вызовов .ToString
.