首页 > 解决方案 > 如何在特定端口运行 asp.net core 2.1 发布应用程序?

问题描述

环境:Ubuntu 18.04下的ASP.NET Core 2.1

默认情况下,新创建的 asp.net 核心应用在http://localhost:5000运行并自动重定向到https://localhost:5001

由于我打算在 nginx 下运行我的应用程序(并使用 nginx 的 SSL 功能),我想在没有 https 的情况下在特定端口(例如 6000)上运行我发布的应用程序。

Post ASP.NET Core 2.1 + Kestrel (How to disable HTTPS)解释说必须简单地使用“--urls”参数来实现这一点。

这是我尝试过的:

$ dotnet publish --configuration Release
$ dotnet bin/Release/netcoreapp2.1/MyApp.dll

该应用程序现在开始监听http://localhost:5000https://localhost:5001。当我浏览到http://localhost:5000时,它会自动重定向到https://localhost:5001。到目前为止,一切都很好。

现在,我尝试在 6000 端口运行:

$ dotnet bin/Release/netcoreapp2.1/MyApp.dll
     --urls="http://localhost:6000"

从终端窗口中的消息来看,该应用程序似乎开始在http://localhost:6000处侦听。但是,浏览到此 URL 会导致“无法访问此站点”错误。

我什至尝试过:

$ dotnet bin/Release/netcoreapp2.1/MyApp.dll
     --urls="http://localhost:6000,https://localhost:6001"

在这种情况下,我收到一条错误消息,“只能使用 IApplicationBuilder.UsePathBase() 配置路径库”。

有人可以告诉我如何简单地在指定端口运行应用程序吗?我希望我不需要硬编码端口号。

标签: asp.net-core

解决方案


“路径基只能使用 IApplicationBuilder.UsePathBase() 进行配置。”

对于此错误,它是由您,在 url 之间使用引起的。您需要使用;以下方式拆分网址:

dotnet bin/release/netcoreapp2.1/publish/webapplication3.dll --urls="http://localhost:8000;https://localhost:8001"

我想在没有 https 的情况下在特定端口(例如 6000)上运行我发布的应用程序。

对于没有 https 的运行,您需要删除app.UseHttpsRedirection();inStartup.cs

再注

如果您无法访问6000,我建议您进行测试8000port 6000大多数浏览器都禁用了 ,。


推荐阅读