public void ProvideFault(Exception ex, MessageVersion version, ref Message msg) { _logger.Error("ServiceExceptionsHandler received unhandled exception", ex); var fe = new FaultException <UnhandledException>(UnhandledException.CreateFromEx(ex)); var mf = fe.CreateMessageFault(); msg = Message.CreateMessage(version, mf, string.Empty); _logger.Error("ServiceExceptionsHandler handled exception and sent ex data to client"); }
public void Deploy(DeployContext context, byte[] filesHash) { if (!_accessIsGranted) { throw new AuthenticationException("Session should be terminated because access wasn't granted"); } if (_filesBuffer == null || _filesBuffer.Length == 0) { throw new InvalidOperationException("Files was not transfered before deployment"); } if (!FileHashIsEqual(filesHash, MD5.Create().ComputeHash(_filesBuffer))) { throw new ArgumentException("File sending was failed because it's hash is wrong"); } var callback = _dsFactory.CreateCallbackObj(); try { _accessIsGranted = false; var conf = _dsFactory.CreateConfObj(_sessionKey, context, _cFactory); if (!GetDirectoryName(conf.SurveyPath.Survey).Equals(_updatedForlder, StringComparison.InvariantCultureIgnoreCase)) { throw new ArgumentException("Current session allows deploy only to '" + _updatedForlder + "' folder"); } _logger.Info(string.Format("Starting deploy process for folder '{0}'", _updatedForlder)); RunDeployment(conf, callback, context, _filesBuffer); _logger.Info("Deploy completed successfully"); } catch (Exception ex) { callback.OnFault(UnhandledException.CreateFromEx(ex)); throw; } finally { callback.OnClose(); Dispose(); } }