2013-06-07 2 views
0

Некоторые из моих веб-сайтов не работают хорошо в производственной среде, когда-то сбое и иногда исключение. Поскольку эти веб-сайты действительно старые, некоторым из них недостаточно журнала для устранения неполадок. Я знаю, что могу добавить код один за другим, чтобы иметь достаточно журнала, но это огромная рабочая нагрузка и может повлиять на существующую логику.В любом случае, чтобы запустить код C# в удаленном процессе (например, IIS)

так, что я пытаюсь сделать, это: без изменения любого существующего кода продукта, мы можем присоединить или внедрить код в процесс веб-сайта во время выполнения, то я могу выполнить некоторый код для входа исключение, запрос HTTP и HTTP ответ. моя среда Asp.net 4.0+ и IIS7 +

, если я могу выполнить свой код в процессе продукта, это будет намного легче войти без изменения кода продукта, код понравится:

AppDomain.CurrentDomain.FirstChanceException += (sender, e) => 
      { 
       ///write log... 
      }; 

unhandle исключение составляет один из случая, у меня есть несколько другого случая, что я хочу обратиться к всей продукции, как:

  1. журнал всего запрос и ответ (я могу включить журнал и отключить журнал в в любое время, с пульта дистанционного управления система управления)
  2. Log unhandle исключение
  3. журнал поглотила исключение
  4. получить дамп
  5. монитора приложение, когда состояние достигнуто (например. Количество исключений, тайм-аут, использование памяти) вызвать некоторое действие
  6. печать все стека, когда исключение или неожиданное возвращаемое значение (с параметром и местного значения, которые функционируют ссылка)

существует несколько технологий точки я могу» t найти решение на данный момент ...

ответ

1

Если это веб-приложение, и вы имеете дело с необработанными исключениями, вы можете добавить запись в global.asax; это может или не поможет, но похоже, что это даст вам больше понимания, чем то, что у вас есть.

Теперь, технически говоря, можно утверждать, что изменение global.asax модифицирует код производства, но я взял свой вопрос означает, что вы не хотите, чтобы пойти и изменить сотни мест в производстве кода и т.д.

+0

Да, модифицируйте сотни продуктов - это огромная работа и может привести к ручной ошибке, поэтому я хочу найти программный способ включения журнала, исключения и других функций. – Clover

1

Самый простой способ - добавить регистрацию ошибок модуль в IIS.

См., Например, SharpBrake, который имеет модуль IIS под названием NotifierHttpModule, который автоматически захватывает все исключения, выброшенные сайтом без какой-либо модификации кода сайта. (Единственное, что вам нужно сделать, это включить инициализацию модуля в ваш файл web.config.) Вы можете написать что-то самостоятельно на основе SharpBrake или ...

Фактически, за то, что вы делаете, вы можете использовать услугу, например AirBrake.io или ее бесплатный клон с открытым исходным кодом ErrBit, чтобы выполнить регистрацию, а затем вы можете использовать SharpBrake для обнаружения ошибок.

Смежные вопросы