访问linux托管的ASP.NET Core 2.x web应用程序(无需nginx)

lon*_*nix 1 asp.net ubuntu kestrel-http-server asp.net-core asp.net-core-2.1

我的 ASP.NET Core 2.1 Web 应用程序在我的开发设置上完美运行。现在我想在生产中测试它。

\n\n

生产服务器是Ubuntu 18。我按照说明进行操作。我还不想设置 nginx,只是做一些快速测试,说明如下:

\n\n
\n

“带有或不带有反向代理服务器的配置\xe2\x80\x94\xe2\x80\x94 都是 ASP.NET Core 2.0 或更高版本应用程序的有效且受支持的托管配置”。

\n
\n\n

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

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

它运行时没有错误/警告,并表示它正在监听http://localhost:5000.

\n\n

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

\n\n

我究竟做错了什么?

\n

zhi*_*min 6

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

对于开发,您可以运行:

dotnet run --urls http://0.0.0.0:5000
Run Code Online (Sandbox Code Playgroud)

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

dotnet MyApp.dll --urls http://0.0.0.0:5000
Run Code Online (Sandbox Code Playgroud)

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