示例#1
0
        public static void CallCustomHandlers(ISoapLoggerHandlerService service)
        {
            if (service == null)
            {
                throw new ArgumentNullException("service");
            }

            if (_settings == null)
            {
                throw new InvalidOperationException("_settings is null");
            }

            if (_requestBody == null)
            {
                service.CustomHandlersDisabled(_settings);
                return;
            }

            _service = service;

            try
            {
                _service.HandleRequestBody(_requestBody, _settings);
            }
            finally
            {
                _requestBody = null;
                _settings    = null;
            }
        }
示例#2
0
        internal static void CallResponseCallback(byte[] responseBody, SoapLoggerSettings settings)
        {
            if (_requestBody != null)
            {
                //something went wrong, either pipeline execution didn't reach web-service method
                //or web-service method didn't call 'ReadRequestSetResponseCallback'

                //TODO determine case and log both files for first case

                var requestBody = _requestBody;
                _requestBody = null;

                SoapLoggerTools.WriteFileDefault(requestBody, true, settings.LogPath, false);
                SoapLoggerTools.WriteFileDefault(responseBody, false, settings.LogPath, false);

                //TODO add logging error message to file

                throw new LoggerException("something went wrong, either pipeline execution didn't reach web-service method or web-service method didn't execute 'SoapLoggerService.CallCustomHandlers'");
            }

            try
            {
                _service.HandleResponseBodyCallback(responseBody, settings);
            }
            finally
            {
                _service = null;
            }
        }
示例#3
0
 internal static void CallCustomHandlersDisabledCallback(SoapLoggerSettings settings)
 {
     if (_client != null)
     {
         _client.CustomHandlersDisabledCallback(settings);
     }
 }
示例#4
0
 public LoggingEncoder(LoggingEncoderFactory factory)
 {
     _factory      = factory;
     _innerEncoder = factory.InnerMessageFactory.Encoder;
     _contentType  = factory.MediaType;
     _settings     = factory.Settings;
     _handler      = factory.Settings.IsService ? (HandlerAbstract) new HandlerService(factory.Settings) : new HandlerClient(factory.Settings);
 }
示例#5
0
        internal LoggingEncoderFactory(SoapLoggerSettings settings, string mediaType, MessageVersion version, MessageEncoderFactory messageFactory)
        {
            Settings            = settings;
            MediaType           = mediaType;
            InnerMessageFactory = messageFactory;

            _messageVersion = version;
            _encoder        = new LoggingEncoder(this);
        }
        public LoggingBindingElement(string logPath, string useCustomHandler)
        {
            this.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement();
            this.InnerMessageEncodingBindingElement.MessageVersion = _messageVersion;

            this.Settings                  = new SoapLoggerSettings();
            this.Settings.LogPath          = logPath;
            this.Settings.UseCustomHandler = useCustomHandler.Equals(Boolean.TrueString, StringComparison.InvariantCultureIgnoreCase);
        }
示例#7
0
        internal static void CallRequestCallback(byte[] requestBody, SoapLoggerSettings settings)
        {
            if (Client == null)
            {
                string methodName = "SoapLoggerClient.SetCustomHandlerCallbacks";
                throw new LoggerException("You have enabled 'useCustomHandler' for client class of given service. So method '" + methodName + "' should be called before making any request. Make sure to call it everywhere.");
            }

            Client.HandleRequestBodyCallback(requestBody, settings);
        }
示例#8
0
        internal LoggingEncoderFactory(SoapLoggerSettings settings, MessageEncoderFactory messageFactory)
        {
            // messageFactory is an instance of internal class 'TextMessageEncoderFactory'
            // encoder is an instance of internal class 'TextMessageEncoder'

            var encoder = messageFactory.Encoder;

            _messageVersion = messageFactory.MessageVersion;
            _encoder        = new LoggingEncoder(encoder, settings);
        }
示例#9
0
        internal static void CallRequestCallback(byte[] requestBody, SoapLoggerSettings settings)
        {
            if (_client == null)
            {
                const string methodName = "SoapLoggerClient.SetCustomHandlerCallbacks";
                throw new LoggerException("You have enabled 'useCustomHandler' for client class of given service. So method '" + methodName + "' should be called before each request (typically in constructor of inherited client class).");
            }

            _client.HandleRequestBodyCallback(requestBody, settings);
        }
示例#10
0
 internal static void CallResponseCallback(byte[] responseBody, SoapLoggerSettings settings)
 {
     try
     {
         _client.HandleResponseBodyCallback(responseBody, settings);
     }
     finally
     {
         _client = null;
     }
 }
        public LoggingBindingElement(string logPath, bool saveOriginalBinaryBody, bool useCustomHandler, System.ServiceModel.Channels.MessageVersion messageVersion)
        {
            var encoding = Encoding.UTF8; // we can set it via config if needed

            this.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding);

            this.Settings         = new SoapLoggerSettings();
            this.Settings.LogPath = logPath;
            this.Settings.SaveOriginalBinaryBody = saveOriginalBinaryBody;
            this.Settings.UseCustomHandler       = useCustomHandler;
        }
示例#12
0
        public LoggingEncoder(MessageEncoder innerEncoder, SoapLoggerSettings settings)
        {
            _innerEncoder = innerEncoder;
            _settings     = settings;

            if (_settings.UseCustomHandler)
            {
                _handler = new HandlerCustom.HandlerCustom(_settings);
            }
            else
            {
                _handler = new HandlerDefault(_settings);
            }
        }
示例#13
0
        public LoggingEncoder(LoggingEncoderFactory factory)
        {
            _factory      = factory;
            _innerEncoder = factory.InnerMessageFactory.Encoder;
            _contentType  = factory.MediaType;
            _settings     = factory.Settings;

            if (factory.Settings.UseCustomHandler)
            {
                _handler = new HandlerCustom.HandlerCustom(_settings);
            }
            else
            {
                _handler = new HandlerDefault(_settings);
            }
        }
示例#14
0
 public HandlerCustom(SoapLoggerSettings settings) : base(settings)
 {
 }
示例#15
0
 public HandlerDefault(SoapLoggerSettings settings)
 {
     _settings = settings;
 }
 private LoggingBindingElement(MessageEncodingBindingElement messageEncodingBinding, SoapLoggerSettings settings)
 {
     this.InnerMessageEncodingBindingElement = messageEncodingBinding;
     this.Settings = settings;
 }
 public void HandleRequestBody(byte[] requestBody, SoapLoggerSettings settings)
 {
     SoapLoggerTools.WriteFileDefault(requestBody, true, settings.LogPath);
 }
 public void HandleResponseBodyCallback(byte[] responseBody, SoapLoggerSettings settings)
 {
     SoapLoggerTools.WriteFileDefault(responseBody, false, settings.LogPath);
 }
示例#19
0
 internal static void SetSettings(SoapLoggerSettings settings)
 {
     _settings = settings;
 }
 public void CustomHandlersDisabled(SoapLoggerSettings settings)
 {
     Console.WriteLine("CustomHandlersDisabled");
 }
 public void HandleResponseBodyCallback(byte[] responseBody, SoapLoggerSettings settings)
 {
     WriteFileCustom(responseBody, false, settings.LogPath);
 }
 public void HandleRequestBody(byte[] requestBody, SoapLoggerSettings settings)
 {
     WriteFileCustom(requestBody, true, settings.LogPath);
 }