ELMAH ошибки и классический Asp - PullRequest
2 голосов
/ 16 января 2012

Мы уже используем ELMAH для регистрации ошибок на имеющемся у нас веб-сайте ASP.NET MVC ... но наш основной веб-сайт по-прежнему классический asp, и я начал создавать структуру обработки ошибок / регистрации для этого веб-сайта, но Я подумал, что было бы здорово, если бы мы могли поддерживать логирование ошибок во всех наших приложениях. Я хотел бы использовать одну и ту же структуру базы данных ... возможно, даже хранить ошибки из разных исходных приложений в одной таблице и затем фильтровать по источникам. Я подумал, что, возможно, я мог бы обратиться к ELMAH dll из нашего классического кода сервера asp vb, чтобы записать информацию об ошибке. Я взглянул на веб-сайт ELMAH ... а затем взглянул на AIRBRAKE - http://airbrake.io/pages/home - но не мог понять, как это будет или могло бы быть сделано на классической веб-странице asp.

Если у кого-то есть опыт или есть предложения, которые будут полезны, я буду признателен ... спасибо.

Ответы [ 2 ]

3 голосов
/ 07 мая 2014

Вдохновленный ответом Билла Мартина, я собрал доказательство концепции, демонстрирующее эту работу.Существует классический обработчик ASP, который вызывает Server.GetLastError(), кодирует результат в виде JSON и помещает его в .NET HttpHandler, который затем записывает его в ELMAH вместе со всеми обычными ошибками .NET.

Код и примечанияв https://github.com/dylanbeattie/ElmahASP

2 голосов
/ 16 января 2012

В зависимости от того, как долго вы планируете оставаться на классическом asp, одним из вариантов будет создание временного сайта .Net, в котором включен elmah для перехвата классических ошибок asp. Ваш классический ASP-сайт будет отправлять этому сайту сообщения об ошибках с помощью сообщения или чего-либо другого, используя защиту для предотвращения нежелательных сообщений. Вам нужно будет проанализировать отправленные данные и вручную вызвать elmah для регистрации ошибки.

Затем при обновлении используйте те же настройки, и логирование между двумя версиями будет плавным.

...