无法在单个项目中托管多个WebHost

时间:2018-01-25 17:21:09

标签: c# asp.net-core kestrel-http-server

我试图让我的应用程序在多个端口上侦听,

我的主要启动代码;

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseUrls("http://*:4445")
        .Build();
}

附加主持人

      Host = new WebHostBuilder()
          .ConfigureServices(s => { s.AddSingleton(Session); })
          .UseKestrel()
          .UseUrls($"http://*:{Session.ProxyPort}") //5684
          .UseIISIntegration()
          .UseStartup<ProxyStartup>()
          .Build();
        Host.Start();

例外

Message: Failed to bind to address http://127.0.0.1:26450: address already in 

端口不是固定的高端口号,我也看到28246

一些netstat的东西;违规港口是21975

TCP    127.0.0.1:21975        MyMachine:0              LISTENING
 [dotnet.exe]
  TCP    127.0.0.1:21975        MyMachine:57398          ESTABLISHED
 [dotnet.exe]
 TCP    127.0.0.1:57398        MyMachine:21975          ESTABLISHED
 [iisexpress.exe]

1 个答案:

答案 0 :(得分:0)

在这种情况下,问题与调试和调试下的项目设置有关。

有两个配置文件,一个名为IIS表示另一个名为我的项目名称将“启动:项目”。调试似乎总是转到第一个选项(IIS EXPRESS),删除该配置文件修复了我的问题