Как реализовать автоматический отчет об ошибке/катастрофическом отказе для веб-приложения ASP.NET?

Вот ответ, используя tidyverse методы из dplyr и tidyr

library(tidyverse)

df <- data.frame(ca = c("a","b","a","c","b", "b"),
                 f = c(3,4,0,NA,3, 4),
                 f2 = c(NA,5,6,1,9, 7),
                 f3 = c(3,0,6,3,0, 8))

df %>% 
  replace_na(list(f = 0, f2 = 0)) %>% 
  mutate(f_new = f + f2)
#>   ca f f2 f3 f_new
#> 1  a 3  0  3     3
#> 2  b 4  5  0     9
#> 3  a 0  6  6     6
#> 4  c 0  1  3     1
#> 5  b 3  9  0    12
#> 6  b 4  7  8    11
5
задан kimsk 31 January 2009 в 23:09
поделиться

5 ответов

ASP.NET 2,0 introducted медицинских контроля, которые позволяют Вам делать это, просто добавив некоторый материал к web.config. См.: http://msdn.microsoft.com/en-us/library/ms998306.aspx

Это может зарегистрироваться к почте, sql, eventlog, и т.д. и позволяет Вам устанавливать буферы. Таким образом, это, например, не уничтожит Ваш mailserver, если sql база данных понизится или если некоторый пользователь обнаруживает ошибку и попытки называть его слишком часто секундой :-)

Можно также зарегистрировать неудачную аутентификацию и перезапуски пула приложений с нею, довольно полезно, если Вам просто нужна она работающий быстрый. Все еще сомнительно - ли это лучшее решение управлять всеми ошибками. Поскольку это не могло бы, получил всю информацию, в которой Вы нуждаетесь, например, версия браузера или smt как этот.

7
ответ дан 18 December 2019 в 13:20
поделиться

ELMAH является библиотекой, которая включает и обнаруживает исключения. Можно также зарегистрировать событие сами. События и много данных как параметры URL и информация о браузере могут быть посланы по электронной почте администраторам и дополнительно сохранены в базе данных для дисплея. (Скорее как журнал событий для веб-сайта.) Это не сделало, чтобы встроенный пользователь сформировал это, я видел, но могу, вероятно, быть расширен для включения такой опции.

Я использовал/настраивал его в течение приблизительно двух лет теперь, и это действительно исключительно.

Другая опция могла бы состоять в том, чтобы использовать Kampyle, который включает поле обратной связи на нижнем правом из Вашего веб-сайта. Вы могли использовать JavaScript для инициирования поля, чтобы появиться, если проблема обнаруживается на веб-сайте.

4
ответ дан 18 December 2019 в 13:20
поделиться

Для ASP.NET applicatino - или любое веб-приложение в этом отношении - не является этим просто двухступенчатый процесс:

  1. Вход ошибки (очевидно); и
  2. Поместите форму в ошибочный документ, чтобы позволить пользователю вводить обратную связь.

Или есть ли больше к этому?

1
ответ дан 18 December 2019 в 13:20
поделиться

Ваши ошибки пройдут через метод Application_Error файла Global.asax.cs (который Вам, вероятно, придется создать). Я использую этот факт, чтобы зафиксировать ошибку и зарегистрировать его к базе данных:

void Application_Error(object sender, EventArgs e)
{
    try
    {
        SqlConnection errConnection = new SqlConnection("Your connection string");

        // After setting up a command object, I call a stored procedure to save information about
        // the crash.  I pass two primary arguments.  The first is the URL:
        errCommand.Parameters.Add("@URL", SqlDbType.VarChar).Value = Request.Url.ToString();

        // The second is the error information.
        errCommand.Parameters.Add("@EI", SqlDbType.Text).Value = Server.GetLastError().ToString();

        // I pass some other information from my session as well...

       // After setting up an output parameter called ErrorID, I call the command...
       errCommand.ExecuteNonQuery();
       // Now Error ID is stored in the session.
       Session["ErrorID"] = (int)ErrorID.Value;
    }
    catch { } //  I do NOT want the error handling call to throw an error.
}

Теперь, необходимо было настроить сеть. Файл конфигурации так, чтобы определенная страница получила контроль, когда ошибка происходит. На этой странице Вы проверите сессию на ошибочный идентификатор и покажете его пользователю. В выводе я прошу, чтобы пользователь записал ошибку, если они хотели бы позвонить нам для получения дополнительной информации. Если мы действительно получаем запрос, я могу войти в базу данных и получить полную трассировку ошибки.

1
ответ дан 18 December 2019 в 13:20
поделиться

Вы можете контроль мое учебное руководство о том, как реализовать исключение, входящее в систему asp.net - http://jesal.us/blog/index.php/2008/04/08/exception-logging-using-the-database/

1
ответ дан 18 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: