/// <summary> /// Handles the execution exception. /// </summary> /// <param name="exception">The exception.</param> /// <param name="context">The message context.</param> /// <returns></returns> public async Task <MessagingContext> HandleExecutionException(Exception exception, MessagingContext context) { Logger.Error($"Exception occured while executing Steps: {exception.Message}"); Logger.Trace(exception.StackTrace); if (exception.InnerException != null) { Logger.Error(exception.InnerException.Message); Logger.Trace(exception.InnerException.StackTrace); } string ebmsMessageId = await GetEbmsMessageId(context); using (DatastoreContext db = _createContext()) { await db.TransactionalAsync(async ctx => { var repository = new DatastoreRepository(ctx); var service = new ExceptionService(_configuration, repository, _bodyStore); OutException entity = context.SubmitMessage != null ? await service.InsertOutgoingSubmitExceptionAsync(exception, context.SubmitMessage, context.SendingPMode) : await service.InsertOutgoingAS4MessageExceptionAsync(exception, ebmsMessageId, context.MessageEntityId, context.SendingPMode); await ctx.SaveChangesAsync(); service.InsertRelatedRetryReliability(entity, context.SendingPMode?.ExceptionHandling?.Reliability); await ctx.SaveChangesAsync(); }); } return(new MessagingContext(exception)); }