One of the cool features of .NET Aspire is the Aspire Dashboard(also available standalone by the way). It allows you to closely track various aspects of your app and its resources, including logs, traces, and environment configurations, in real-time.
After migrating an existing solution to .NET Aspire, I noticed that no URL was shown for some of the endpoints:
I couldn’t find a direct reason why this was the case, but I found online that it could be related to the launchsettings.json
files.
Here is the launchsettings.json
file for the ‘api’ project (where the endpoint URL is shown):
{ | |
"$schema": "https://json.schemastore.org/launchsettings.json", | |
"iisSettings": { | |
"windowsAuthentication": false, | |
"anonymousAuthentication": true, | |
"iisExpress": { | |
"applicationUrl": "http://localhost:62265", | |
"sslPort": 44393 | |
} | |
}, | |
"profiles": { | |
"MinimalAPI.Example": { | |
"commandName": "Project", | |
"dotnetRunMessages": true, | |
"launchBrowser": true, | |
"launchUrl": "swagger", | |
"applicationUrl": "https://localhost:7284;http://localhost:5284", | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
} | |
}, | |
"IIS Express": { | |
"commandName": "IISExpress", | |
"launchBrowser": true, | |
"launchUrl": "swagger", | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
} | |
} | |
} | |
} |
And here is the launchsettings.json
file the for the ‘webapp’ project (where no endpoint is shown):
{ | |
"profiles": { | |
"IIS Express": { | |
"commandName": "IISExpress", | |
"launchBrowser": true, | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
} | |
}, | |
"eShopExample": { | |
"commandName": "Project", | |
"launchBrowser": true, | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
}, | |
"authenticationMode": "Windows", | |
"applicationUrl": "http://localhost:42441/" | |
} | |
}, | |
"iisSettings": { | |
"windowsAuthentication": true, | |
"anonymousAuthentication": false, | |
"iisExpress": { | |
"applicationUrl": "http://localhost:42440/", | |
"sslPort": 44327 | |
} | |
} | |
} |
With some trial and error, I found that the order of the profiles in the launchsettings.json
file matters and that Aspire will use the first profile found. I switched the profiles for the ‘webapp’ project:
{ | |
"profiles": { | |
"eShopExample": { | |
"commandName": "Project", | |
"dotnetRunMessages": true, | |
"launchBrowser": true, | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
}, | |
"authenticationMode": "Windows", | |
"applicationUrl": "https://localhost:44372;http://localhost:42441/" | |
}, | |
"IIS Express": { | |
"commandName": "IISExpress", | |
"launchBrowser": true, | |
"environmentVariables": { | |
"ASPNETCORE_ENVIRONMENT": "Development" | |
} | |
} | |
}, | |
"iisSettings": { | |
"windowsAuthentication": true, | |
"anonymousAuthentication": false, | |
"iisExpress": { | |
"applicationUrl": "http://localhost:42440/", | |
"sslPort": 44327 | |
} | |
} | |
} |
And indeed, after doing that, the endpoint URL became visible on the dashboard:
More information
.NET Aspire overview - .NET Aspire | Microsoft Learn
Standalone .NET Aspire dashboard - .NET Aspire | Microsoft Learn