Использование Castle для регистрации исключений в WCF (и других) - PullRequest
1 голос
/ 02 апреля 2009

Я пишу веб-сервис WCF, и мне интересно, есть ли элегантный (аспектно-ориентированный) способ использования механизма перехватчика Castle для регистрации исключений, генерируемых моими веб-методами? Я знаю о IInterceptor интерфейсе, но не смог найти там никакой информации об исключении.

Я видел Castle, AOP и Logging в .NET , но он охватывает только параметры метода.

Есть ли лучший (WCF или Каслс) механизм для этого? Кстати, я использую log4net для регистрации.

ОБНОВЛЕНИЕ: я знаю о средствах ведения журналов WCF, но я больше искал общее решение, а не только в среде WCF.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2009

Если вы хотите использовать Замковые перехватчики в целом, вы можете сделать что-то вроде этого:

public void Intercept(IInvocation invocation)
{
   //do some preprocessing here if needed
   try
   {
      invocation.Proceed()
   }
   catch(Exception e)
   {
      LogException(e);
      throw;
   }
   finally
   {
      //do some postprocessing jf needed
   }
}
1 голос
/ 02 апреля 2009

Вы должны использовать сборку в трассировке и ведении журнала WCF. Затем вы можете использовать WCF Trace Viewer, который объединит журналы от службы и клиента, чтобы вы могли видеть полный поток сообщений.

http://www.devx.com/dotnet/Article/37389/0/page/6

В WCF есть интерфейс IErrorHandler:

public interface IErrorHandler
{
    bool HandleError(Exception error, MessageFault fault);
    void ProvideFault(Exception error, ref MessageFault fault, ref string faultAction);
}

Подробнее здесь: http://www.extremeexperts.com/Net/Articles/ExceptionHandlingInWCF.aspx

...