1

我想在 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(在服务器中)一切正常,我可以在端口 1883 上访问 mqqt

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

4

1 回答 1

0

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

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

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

在此处输入图像描述

于 2018-11-08T07:25:17.973 回答