| 12345678910111213141516171819202122232425262728293031 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.ServiceModel.Channels;
- using System.ServiceModel;
- namespace System.ServiceModel.Dispatcher
- {
- internal class ErrorProcessingHandler : BaseRequestProcessorHandler
- {
- protected override bool ProcessRequest (MessageProcessingContext mrc)
- {
- Exception ex = mrc.ProcessingException;
- DispatchRuntime dispatchRuntime = mrc.OperationContext.EndpointDispatcher.DispatchRuntime;
-
- //invoke all user handlers
- ChannelDispatcher channelDispatcher = dispatchRuntime.ChannelDispatcher;
- foreach (IErrorHandler handler in channelDispatcher.ErrorHandlers)
- if (handler.HandleError (ex))
- break;
- FaultConverter fc = FaultConverter.GetDefaultFaultConverter (dispatchRuntime.ChannelDispatcher.MessageVersion);
- Message res = null;
- if (!fc.TryCreateFaultMessage (ex, out res))
- throw ex;
- mrc.ReplyMessage = res;
- mrc.Reply (true);
- return false;
- }
- }
- }
|