如何在特定端口上运行ASP.NET Core 2.1 Release App?

时间:2018-11-05 07:13:13

标签: asp.net-core

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

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

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

帖子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()配置路径库。”

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

2 个答案:

答案 0 :(得分:2)

  

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

对于此错误,是由您在网址之间使用,引起的。您需要使用;来拆分网址,如下所示:

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

我想在不带https的特定端口(例如6000)上运行发布的应用程序。

要在没有https的情况下运行,您需要删除app.UseHttpsRedirection();中的Startup.cs

更多说明

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

答案 1 :(得分:0)

根据this piece of documentation,它应该类似于dotnet run --urls "http://*:8080"。因此,两者之间没有等号。但是根据Kestrel文档,有多种方法可以定义不同的端口,例如ASPNETCORE_URLS环境变量。