【问题标题】:Access linux-hosted ASP.NET Core 2.x webapp (without nginx)访问 linux 托管的 ASP.NET Core 2.x webapp(无 nginx)
【发布时间】:2018-09-06 09:23:28
【问题描述】:

我的 ASP.NET Core 2.1 webapp 在我的开发设置上运行良好。现在我想在生产环境中测试它。

生产服务器是 Ubuntu 18。我关注了the instructions。我还不想设置nginx,只是做一些快速测试,说明说:

“无论有无反向代理服务器,这两种配置都是 ASP.NET Core 2.0 或更高版本应用的有效且受支持的托管配置”。

所以我构建并发布了我的项目:dotnet publish --configuration Release。 然后在服务器上:

  • 安装 dotnet 运行时
  • 将文件复制到服务器 (/var/www/myapp)
  • 打开的端口:sudo uwf allow 5000/tcp 80/tcp
  • 运行dotnet MyApp.dll(也试过sudo dotnet MyApp.dll

它运行时没有错误/警告,并说它正在收听http://localhost:5000

在我的本地机器上,我尝试了http://serveripaddress(和http://serveripaddress:5000)但什么也没得到(“无法连接”)。我可以使用 ssh、sftp 等方式访问该服务器 - 只有 http 不起作用。

我做错了什么?

【问题讨论】:

    标签: asp.net ubuntu asp.net-core asp.net-core-2.1 kestrel-http-server


    【解决方案1】:

    发现问题。我需要使用:

    sudo ASPNETCORE_URLS="http://0.0.0.0:5000" dotnet MyApp.dll
    

    然后它记录Now listening on: http://0.0.0.0:5000。我可以从远程客户端访问它。

    【讨论】:

    • 你到底在哪里输入这个“命令”?你确定sudo 是正确的吗?
    • 对不起,我不记得了——那是很久以前的事了,从那时起sdk就升级了。但是我确定这是一个错字,sudo 应该在环境变量之后。
    【解决方案2】:

    主机默认绑定是 127.0.0.1 ,所以你只能在本地访问应用程序。如果您想从网络访问它,请添加--urls 参数。例如:

    为了开发,你可以运行:

    dotnet run --urls http://0.0.0.0:5000
    

    对于已部署的项目,您可以运行:

    dotnet MyApp.dll --urls http://0.0.0.0:5000
    

    我使用的 dotnet core sdk 是 2.1.400 版本。

    【讨论】:

    • 这不适用于2.1 - 我认为他们删除了该选项。看我的回答。
    • 可能是他们调整了参数名,我试试,应该有一个参数可以改变绑定地址。
    • 我的方式可行,但我更喜欢你的方式 - 我希望有一个新参数。
    • @lonix ,我试过了,它有效,请查看我编辑的答案。
    • 对我不起作用。我跑了dotnet --info,它显示主机是版本2.1.3。我记得在某处读到不再支持urls。我不确定为什么它对你有用,但对我没有用。无论如何,谢谢。
    猜你喜欢
    • 2022-10-15
    • 2018-09-22
    • 1970-01-01
    • 2020-12-04
    • 2020-08-04
    • 1970-01-01
    • 2017-04-08
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多