using System.Net; using Microsoft.AspNetCore.Hosting.Server; public class PocKestrelAutoPort { public static async Task RunPoc() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(serverOptions => { serverOptions.Listen(IPAddress.Parse("127.0.0.1"), 0); // 使用端口 0,让系统自动分配端口 }); webBuilder.Configure(app => { app.Run(async context => { await context.Response.WriteAsync("Hello, world!"); }); }); }) .Build(); // 启动后获取实际端口 host.Start(); var addressFeature = host.Services.GetRequiredService().Features .Get(); var boundAddress = addressFeature.Addresses.FirstOrDefault(); System.Console.WriteLine($"Server bound to: {boundAddress}"); await host.WaitForShutdownAsync(); } }