Dashboard logs the endpoint configuration, not the final port. That means if a dynamic port is specified - 0 - then 0 is logged instead of the assigned port.
2024-02-21T09:44:23.6935833 info: Aspire.Dashboard[0]
Now listening on: https://localhost:0/
2024-02-21T09:44:23.7048955 info: Aspire.Dashboard[0]
OTLP server running at: http://localhost:0/
Logging needs to move to after Kestrel has started and the port is assigned.