From 97395504724a49ceededc45c0dbd67c4d9ac104c Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Thu, 23 Jul 2026 13:51:35 -0500 Subject: [PATCH 1/4] Move Redis off the default port --- src/Exceptionless.AppHost/Program.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index a2db8d0d36..7b29a93e84 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -39,7 +39,8 @@ var storageBlobs = storage.AddBlobs("StorageBlobs"); var storageQueues = storage.AddQueues("StorageQueues"); -var cache = builder.AddRedis("Redis", port: 6379) +// Aspire reserves 6380 for Redis's secondary non-TLS endpoint when proxying is disabled. +var cache = builder.AddRedis("Redis", port: 6381) .WithImageTag("8.6") .WithDataVolume("exceptionless.redis.data.v1") .WithEndpointProxySupport(false) From 8e390046e61ae9dafa02727a7fe753ad69628a06 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Thu, 23 Jul 2026 14:13:08 -0500 Subject: [PATCH 2/4] Remove obsolete JavaScript debugging workaround --- .../Extensions/AspireExtensions.cs | 22 ------------------- src/Exceptionless.AppHost/Program.cs | 2 -- 2 files changed, 24 deletions(-) delete mode 100644 src/Exceptionless.AppHost/Extensions/AspireExtensions.cs diff --git a/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs b/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs deleted file mode 100644 index f042d42a7b..0000000000 --- a/src/Exceptionless.AppHost/Extensions/AspireExtensions.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Aspire.Hosting.JavaScript; -using Microsoft.Extensions.Hosting; - -public static class AspireExtensions -{ - // TODO: Remove this once the upstream Aspire bug that attaches a - // SupportsDebuggingAnnotation to JavaScript resources (causing the dashboard - // to surface a non-functional "Debug" command) is fixed. - // See https://github.com/microsoft/aspire/issues/16468 - public static IResourceBuilder RemoveJavaScriptDebuggingAnnotation(this IResourceBuilder resourceBuilder) - where TResource : IResource - { - foreach (var annotation in resourceBuilder.Resource.Annotations - .Where(a => a.GetType().Name == "SupportsDebuggingAnnotation") - .ToArray()) - { - resourceBuilder.Resource.Annotations.Remove(annotation); - } - - return resourceBuilder; - } -} diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index 7b29a93e84..f6e772dfce 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -153,7 +153,6 @@ var oldApp = builder.AddJavaScriptApp("OldApp", "../../src/Exceptionless.Web/ClientApp.angular", "serve") .WithBrowserLogs() .WithReference(api) - .RemoveJavaScriptDebuggingAnnotation() .WithEnvironment("ASPNETCORE_URLS", oldAppAspNetCoreUrls) .WithEnvironment("USE_HTTPS", "true") .WithEnvironment("LIVERELOAD_PORT", oldAppLiveReloadPort.ToString()) @@ -181,7 +180,6 @@ .WithBrowserLogs() .WithReference(api) .WithReference(oldApp) - .RemoveJavaScriptDebuggingAnnotation() .WithEnvironment("PUBLIC_EXCEPTIONLESS_SERVER_URL", exceptionlessServerUrl) .WithEnvironment("PORT", appPort.ToString()) .WithEndpoint("http", e => From caaa13809746e7c0cd0aca3b1559ecb67199a2c2 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Thu, 23 Jul 2026 14:30:38 -0500 Subject: [PATCH 3/4] Avoid local Mailpit and RedisInsight port conflicts --- src/Exceptionless.AppHost/Program.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Exceptionless.AppHost/Program.cs b/src/Exceptionless.AppHost/Program.cs index f6e772dfce..51db032edf 100644 --- a/src/Exceptionless.AppHost/Program.cs +++ b/src/Exceptionless.AppHost/Program.cs @@ -17,7 +17,7 @@ int docsPort = worktreePorts?.DocsHttp ?? 7141; const int DefaultApiHttpsPort = 7111; string exceptionlessServerUrl = worktreePorts?.ApiHttpsUrl ?? $"https://api-ex.dev.localhost:{DefaultApiHttpsPort}"; -const string SharedEmailConnectionString = "smtp://localhost:1025"; +const string SharedEmailConnectionString = "smtp://localhost:1026"; var elastic = builder.AddElasticsearch("Elasticsearch", port: 9200) .WithDataVolume("exceptionless.data.v1") @@ -56,10 +56,10 @@ var mail = builder.AddContainer("Mail", "axllent/mailpit") .WithImageTag("v1.27.10") .WithEndpointProxySupport(false) - .WithHttpEndpoint(8025, 8025, "http") + .WithHttpEndpoint(port: 8026, targetPort: 8025, name: "http") .WithUrlForEndpoint("http", u => { u.DisplayText = "Mail"; u.DisplayOrder = 100; }) .WithHttpHealthCheck("/readyz") - .WithEndpoint(1025, 1025) + .WithEndpoint(targetPort: 1025, port: 1026) .WithUrlForEndpoint("tcp", u => u.DisplayLocation = UrlDisplayLocation.DetailsOnly); var ownedElastic = elastic; @@ -86,6 +86,7 @@ cache = cache.WithRedisInsight(b => b .WithLifetime(ContainerLifetime.Persistent) .WithEndpointProxySupport(false) + .WithHostPort(5541) .WithContainerName("Exceptionless-RedisInsight") .WithUrlForEndpoint("http", u => u.DisplayText = "Redis") .WithParentRelationship(ownedCache), containerName: "Redis-insight"); From d3d374cefd698650a62d9c0642549df3ae4fd09d Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Thu, 23 Jul 2026 15:09:23 -0500 Subject: [PATCH 4/4] Update dev container Mailpit forwarding --- .devcontainer/devcontainer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1e463bc41b..1eec789659 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -29,7 +29,7 @@ ] } }, - "forwardPorts": [5601, 7101, 7111, 7121, 7131, 8025], + "forwardPorts": [5601, 7101, 7111, 7121, 7131, 8026], "otherPortsAttributes": { "onAutoForward": "ignore" }, @@ -53,7 +53,7 @@ "label": "App", "protocol": "https" }, - "8025": { + "8026": { "label": "Mail UI" } },