相关疑难解决方法(0)

如何在指定动态端口(0)时确定ASP.NET Core 2正在侦听哪个端口

我有一个ASP.NET Core 2.0应用程序,我打算作为一个独立的应用程序运行.应用程序应启动并绑定到可用端口.为此,我将WebHostBuilder配置为侦听" http://127.0.0.1:0 "并使用Kestrel服务器.一旦web主机开始监听,我想用文件中的实际端口保存url.我想尽早做到这一点,因为另一个应用程序将读取文件以与我的应用程序进行交互.

如何确定Web主机正在侦听的端口?

kestrel-http-server asp.net-core-2.0

7
推荐指数
3
解决办法
4047
查看次数

确定端口Kestrel绑定到

我正在使用ASP.NET Core空(web)模板编写一个简单的ASP.NET Core服务。

默认情况下,它绑定到端口5000,但我希望它绑定到系统上的随机可用端口。

我可以通过修改BuildWebHost为:

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseUrls("http://*:0") // This enables binding to random port
            .Build();
Run Code Online (Sandbox Code Playgroud)

它绑定到随机端口,但是如何从应用程序中确定我正在侦听哪个端口?

kestrel-http-server asp.net-core asp.net-core-2.0

6
推荐指数
2
解决办法
1524
查看次数

.NET Core 6.0 - 获取Kestrel的动态绑定端口(端口0)

语境

.NET 6 中的“托管”机制已发生变化。以前IWebHostIWebHost.ServerFeatures可用于获取IServerAddressFeature类似内容的属性(来自此 SO 答案):

IWebHost host = new WebHostBuilder()
            .UseStartup<Startup>()
            .UseUrls("http://*:0") // This enables binding to random port
            .Build();
host.Start();
foreach(var address in host.ServerFeatures.Get<IServerAddressesFeature>().Addresses) {
  var uri = new Uri(address);
  var port = uri.Port;
  Console.WriteLine($"Bound to port: {port}");
}
Run Code Online (Sandbox Code Playgroud)

问题:如何使用 IHost 获取 .NET 6 中的端口?

现在在 .NET 6 中我有一个IHost. 如何获取端口(与 一致???):

public class Program {
  public static void Main(string[] args) {
    IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
    hostBuilder.ConfigureWebHostDefaults(webHostBuilder …
Run Code Online (Sandbox Code Playgroud)

c# grpc kestrel-http-server

4
推荐指数
1
解决办法
2419
查看次数