托管具有UseKestrel中定义的端口的aspnet核心应用程序

时间:2018-11-07 16:00:49

标签: iis asp.net-core windows-server kestrel

我想在Windows服务器中托管我的应用程序。我想通过tcp和WebSosckets使用Mqtt。

如果我使用WebDeploy在IIS中发布,则无法访问Program.cs中指定的端口(1883和5000)

       `private static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel(o => {
                o.ListenAnyIP(1883, l => l.UseMqtt());
                o.ListenAnyIP(5000); // default http pipeline
            })
            .UseIISIntegration()    
            .UseStartup<Startup>()
            .Build();`

但是如果我使用dotnet run(在服务器中),一切都是okej,我可以在端口1883上访问mqqt

有没有一种方法可以在IIS中发布应用程序,并且仍然可以访问那些端口? 我缺少什么?

1 个答案:

答案 0 :(得分:0)

对于在IIS中托管,1.11用于配置Kestrel服务器,而IIS用于反向代理。来自客户端的请求首先进入IIS,然后路由到Kestrel。

因此,如果您希望能够从UseKestrel访问Web应用程序,则需要在iis中使用端口1883配置网站。

您可以使用IIS中的1883创建一个新站点,然后通过VS Web Deploy将项目发布到该站点。

enter image description here