diff --git a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs index a1533bd..0015b6d 100644 --- a/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs +++ b/Hcs.WebApp/BackgroundServices/CampaignManagers/ManagerBase.cs @@ -1,5 +1,6 @@ using Hcs.WebApp.Data.Hcs; using Hcs.WebApp.Services; +using Hcs.WebApp.Utils; namespace Hcs.WebApp.BackgroundServices.CampaignManagers { @@ -26,7 +27,7 @@ namespace Hcs.WebApp.BackgroundServices.CampaignManagers public async Task EndWithFailAsync(Exception e) { - await HeadquartersService.SetCampaignEndedWithFailAsync(campaign.Id, e.Message); + await HeadquartersService.SetCampaignEndedWithFailAsync(campaign.Id, e.CombineMessages()); State = IManager.ManagerState.Ended; } diff --git a/Hcs.WebApp/BackgroundServices/OperationExecutionService.cs b/Hcs.WebApp/BackgroundServices/OperationExecutionService.cs index e0fe3a2..aef4a44 100644 --- a/Hcs.WebApp/BackgroundServices/OperationExecutionService.cs +++ b/Hcs.WebApp/BackgroundServices/OperationExecutionService.cs @@ -4,6 +4,7 @@ using Hcs.Broker.MessageCapturer; using Hcs.WebApp.BackgroundServices.OperationExecutors; using Hcs.WebApp.Config; using Hcs.WebApp.Services; +using Hcs.WebApp.Utils; using System.Transactions; namespace Hcs.WebApp.BackgroundServices @@ -45,7 +46,7 @@ namespace Hcs.WebApp.BackgroundServices } catch (Exception e) { - await headquartersService.SetOperationEndedWithFailAsync(operation.Id, e.Message); + await headquartersService.SetOperationEndedWithFailAsync(operation.Id, e.CombineMessages()); } if (!string.IsNullOrEmpty(messageGuid)) diff --git a/Hcs.WebApp/BackgroundServices/ResultWaitService.cs b/Hcs.WebApp/BackgroundServices/ResultWaitService.cs index ccf294d..2bd1cc4 100644 --- a/Hcs.WebApp/BackgroundServices/ResultWaitService.cs +++ b/Hcs.WebApp/BackgroundServices/ResultWaitService.cs @@ -5,6 +5,7 @@ using Hcs.WebApp.BackgroundServices.ResultGetters; using Hcs.WebApp.Config; using Hcs.WebApp.Data.Hcs; using Hcs.WebApp.Services; +using Hcs.WebApp.Utils; namespace Hcs.WebApp.BackgroundServices { @@ -80,7 +81,7 @@ namespace Hcs.WebApp.BackgroundServices catch (Exception e) { var headquartersService = scope.ServiceProvider.GetRequiredService(); - await headquartersService.SetOperationEndedWithFailAsync(entry.operation.Id, e.Message); + await headquartersService.SetOperationEndedWithFailAsync(entry.operation.Id, e.CombineMessages()); entry.state.done = true; } diff --git a/Hcs.WebApp/Utils/ExceptionExtensions.cs b/Hcs.WebApp/Utils/ExceptionExtensions.cs new file mode 100644 index 0000000..b2827b4 --- /dev/null +++ b/Hcs.WebApp/Utils/ExceptionExtensions.cs @@ -0,0 +1,20 @@ +using System.Text; + +namespace Hcs.WebApp.Utils +{ + public static class ExceptionExtensions + { + public static string CombineMessages(this Exception e) + { + var stringBuilder = new StringBuilder(); + var currentException = e; + while (currentException != null) + { + stringBuilder.AppendLine(currentException.Message); + + currentException = currentException.InnerException; + } + return stringBuilder.ToString(); + } + } +}