diff --git a/PortBlog.API/Program.cs b/PortBlog.API/Program.cs index b31ba14..5c67595 100644 --- a/PortBlog.API/Program.cs +++ b/PortBlog.API/Program.cs @@ -33,13 +33,25 @@ Log.Logger = loggerConfiguration .WriteTo.File("logs/portblog.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); -var urls = builder.Configuration.GetSection("Urls"); +var urlsSection = builder.Configuration.GetSection("Urls"); +var urlsValue = urlsSection.Value; -if (!string.IsNullOrEmpty(urls.Value)) +if (!string.IsNullOrWhiteSpace(urlsValue)) { - var allowedUrlsToUse = urls.Value.Split(','); + var allowedUrlsToUse = urlsValue + .Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries) + .Where(u => Uri.IsWellFormedUriString(u, UriKind.Absolute)) + .ToArray(); - builder.WebHost.UseUrls(allowedUrlsToUse); + if (allowedUrlsToUse.Length > 0) + { + builder.WebHost.UseUrls(allowedUrlsToUse); + } + else + { + // optionally log or throw depending on desired behavior + Log.Warning("Configured 'Urls' section was present but no valid URLs were found."); + } } var allowedCorsOrigins = builder.Configuration.GetSection("AllowedCorsOrigins"); diff --git a/PortBlog.API/Services/MailService.cs b/PortBlog.API/Services/MailService.cs index 3cf85db..63aca96 100644 --- a/PortBlog.API/Services/MailService.cs +++ b/PortBlog.API/Services/MailService.cs @@ -67,16 +67,14 @@ namespace PortBlog.API.Services } catch (Exception ex) { - logger.LogCritical( - "Exception while sending mail from {FromEmail} ({Name}): {Exception}", - messageSendDto.FromEmail, - messageSendDto.Name, - ex.Message - ); + // Log full exception and persist failed message. Do not rethrow to avoid causing a 500 from OTP generation + logger.LogCritical(ex, "Exception while sending mail from {FromEmail} ({Name}).", messageSendDto.FromEmail, messageSendDto.Name); messageSendDto.SentStatus = (int)MailConstants.MailStatus.Failed; mailRepository.AddMessage(messageEntity); await mailRepository.SaveChangesAsync(); - throw new Exception(); + + // swallow the exception so OTP generation continues; caller can inspect delivery status via message logs + return; } } }