diff --git a/.autover/changes/fix-static-assets-non-production-env.json b/.autover/changes/fix-static-assets-non-production-env.json
new file mode 100644
index 000000000..60de53a47
--- /dev/null
+++ b/.autover/changes/fix-static-assets-non-production-env.json
@@ -0,0 +1,11 @@
+{
+ "Projects": [
+ {
+ "Name": "Amazon.Lambda.TestTool",
+ "Type": "Patch",
+ "ChangelogMessages": [
+ "Fixed static assets (CSS, JS, BlazorMonaco) failing to load when ASPNETCORE_ENVIRONMENT or DOTNET_ENVIRONMENT is set to a non-Production value by always serving static files from the tool's install directory."
+ ]
+ }
+ ]
+}
diff --git a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj
index 9711bce5d..af6077d95 100644
--- a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj
+++ b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Amazon.Lambda.TestTool.csproj
@@ -75,4 +75,13 @@
+
+
+
+
+
+ PreserveNewest
+
+
+
diff --git a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/TestToolProcess.cs b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/TestToolProcess.cs
index 61a0a8aa5..5da9d349b 100644
--- a/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/TestToolProcess.cs
+++ b/Tools/LambdaTestTool-v2/src/Amazon.Lambda.TestTool/Processes/TestToolProcess.cs
@@ -60,10 +60,8 @@ public static TestToolProcess Startup(RunCommandSettings settings, CancellationT
builder.Services.AddHttpContextAccessor();
var wwwrootPath = Path.Combine(AppContext.BaseDirectory, "wwwroot");
- if (builder.Environment.IsProduction())
- {
- builder.Services.AddSingleton(new PhysicalFileProvider(wwwrootPath));
- }
+ var wwwrootFileProvider = new PhysicalFileProvider(wwwrootPath);
+ builder.Services.AddSingleton(wwwrootFileProvider);
builder.Services.AddSingleton();
var serviceHttp = $"http://{settings.LambdaEmulatorHost}:{settings.LambdaEmulatorPort}";
@@ -87,20 +85,21 @@ public static TestToolProcess Startup(RunCommandSettings settings, CancellationT
var app = builder.Build();
- if (app.Environment.IsProduction())
- {
- app.UseStaticFiles(new StaticFileOptions
- {
- FileProvider = new PhysicalFileProvider(wwwrootPath)
- });
- }
- else
+ if (!app.Environment.IsProduction())
{
// nosemgrep: csharp.lang.security.stacktrace-disclosure.stacktrace-disclosure
app.UseDeveloperExceptionPage();
- app.UseStaticFiles();
}
+ // Always use the explicit file provider to serve static files from the tool's install
+ // directory. Without this, non-Production environments attempt to use the static web
+ // assets manifest which contains absolute paths from the build machine and will fail
+ // when running as an installed global tool on a different machine.
+ app.UseStaticFiles(new StaticFileOptions
+ {
+ FileProvider = wwwrootFileProvider
+ });
+
app.UseAntiforgery();
app.MapRazorComponents()