环境: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:5000和https://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()配置路径库。”
有人可以告诉我如何简单地在指定端口上运行应用程序吗?我希望我不需要对端口号进行硬编码。
答案 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环境变量。