告诉我莱昂,你可以通过哪些方式来运行一个 asp.net 核心网站?
好吧,我不知道所有的方法,但我知道 6 种不同的方法!
了解这一点(即使它需要额外的背景阅读),您将了解很多关于 asp.net 核心站点的工作原理。
如果你在 Visual Studio 中开发一个 asp.net 核心网站,那么你可以通过按 F5 来运行它,以进行调试。但这不是镇上唯一的表演......
您的网站实际上是一个 dotnet 控制台应用程序,它使用名为 Kestrel 的小型网络服务器自托管网站。(这句话有很多东西要解开,但现在就让它洗刷你吧)
您可以从控制台运行它,方法是dotnet run
从包含该project.json
文件的文件夹中调用。
控制台中的输出将显示如下内容:
Now listening on: http://localhost:2000
因此,如果您随后浏览到 http://localhost:2000,您将看到您的网站(控制台将显示有关您访问的日志信息)
在本地计算机上,您可以通过运行“dotnet publish”来准备应用程序以进行部署。这将构建应用程序工件,进行任何缩小等等。
如果您不指定已发布结果的去向,它们最终会出现在YourProject\bin\debug\netcoreapp1.0\publish
如果您进入该文件夹,您可以通过调用运行生成的工件:
dotnet YourProject.dll
请注意,您不要调用“dotnet run YourProject.dll”——忽略run
这个!
所以完整的命令(从包含文件的project.json
文件夹开始)
dotnet publish cd bin\debug\netcoreapp1.0\publish dotnet YourProject.dll
您可以在 IIS 中托管它。我从来没有这样做过,也不打算这样做。我和 IIS 目前正在分道扬镳。但它可以由 IIS 运行。更多信息在这里:发布到 IIS和这里:使用 Visual Studio 通过 Web 部署发布到 IIS。
您可以从本地计算机的 " publish
" 文件夹(在步骤 3 中创建)中获取工件,并将它们复制到 Linux 机器上(使用诸如 SSH、scp、sftp 之类的技术)。然后就可以在控制台运行了,和第3步一模一样:
dotnet YourProject.dll
(这假设您已经在该 linux 机器上安装了 .net 核心,请参见此处的说明。)
从连接到同一台机器的不同控制台,您可以通过运行查看网站,例如:
curl http://localhost:2000
...这不是最舒适的上网方式。但是由于我们的 web 应用程序无法从开放的互联网访问,所以它是您在这一点上可以做的最好的事情。
此外,一旦第一个控制台窗口关闭,应用程序就会停止。所以这不是你最终的生产技术。为了那个原因....
在 Linux 中,您可以配置supervisor
为运行您的应用程序(并使其保持运行)。这类似于应用程序池在 Windows 中所做的工作。
并且nginx
是一个流行的网络服务器,类似于在 Windows 上使用 IIS。两者协同工作以运行您的应用程序并向其传递 Web 请求。您设置 nginx 以接收来自互联网的请求并将它们传递给您的应用程序(即“代理它们”通过您的应用程序,也称为充当“反向代理”)
TIL.secretGeek.net 上有关使用主管的详细信息:
要了解如何配置 nginx 以将请求代理到您的应用程序,请尝试此处的文章:
有了这些,您就可以从 Internet 浏览到您的网站(假设您购买了一个域并将其配置为指向网络服务器,或者您可能像所有铁杆书呆子一样通过 IP 地址浏览。)
好的,这是运行您的 asp.net 核心网络应用程序的 6 种不同方式。
(你可以换成nginx
其他网络服务器Apache
,比如
(您可以使用用户systemd
而upstart
不是主管:这里的注释。)
我做错了什么!?
更新:这个问题的一些答案已经出现......
我写的是 Katana 而不是 Kestrel——修复了。
当然,您也可以在 MS Word 宏中托管 .net 核心应用程序。
我忽略了 Azure。您可以将 .net 核心应用程序部署到 Azure,如果您对此感兴趣,我认为这篇文章很好地介绍了它:将ASP.NET Core 1.0 应用程序部署到 Azure Web 应用程序。
只是在开玩笑说 Word 宏。