当前位置: 首页 > 工具软件 > CoreWeb > 使用案例 >

运行 asp.net core web 应用程序的 6 种不同方式

秦琦
2023-12-01

告诉我莱昂,你可以通过哪些方式来运行一个 asp.net 核心网站?

好吧,我不知道所有的方法,但我知道 6 种不同的方法!

了解这一点(即使它需要额外的背景阅读),您将了解很多关于 asp.net 核心站点的工作原理。

  1. Visual Studio F5

如果你在 Visual Studio 中开发一个 asp.net 核心网站,那么你可以通过按 F5 来运行它,以进行调试。但这不是镇上唯一的表演......

  1. 命令行"dotnet run"

您的网站实际上是一个 dotnet 控制台应用程序,它使用名为 Kestrel 的小型网络服务器自托管网站。(这句话有很多东西要解开,但现在就让它洗刷你吧)

您可以从控制台运行它,方法是dotnet run从包含该project.json文件的文件夹中调用。

控制台中的输出将显示如下内容:

Now listening on: http://localhost:2000

因此,如果您随后浏览到 http://localhost:2000,您将看到您的网站(控制台将显示有关您访问的日志信息)

  1. dotnet publish → cd bin{...}\publish → dotnet YourProject.dll

在本地计算机上,您可以通过运行“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
  1. IIS

您可以在 IIS 中托管它。我从来没有这样做过,也不打算这样做。我和 IIS 目前正在分道扬镳。但它可以由 IIS 运行。更多信息在这里:发布到 IIS和这里:使用 Visual Studio 通过 Web 部署发布到 IIS

  1. 在 Linux 上运行,从控制台......“dotnet YourProject.dll”

您可以从本地计算机的 " publish" 文件夹(在步骤 3 中创建)中获取工件,并将它们复制到 Linux 机器上(使用诸如 SSH、scp、sftp 之类的技术)。然后就可以在控制台运行了,和第3步一模一样:

dotnet YourProject.dll

(这假设您已经在该 linux 机器上安装了 .net 核心,请参见此处的说明。)

从连接到同一台机器的不同控制台,您可以通过运行查看网站,例如:

curl http://localhost:2000

...这不是最舒适的上网方式。但是由于我们的 web 应用程序无法从开放的互联网访问,所以它是您在这一点上可以做的最好的事情。

此外,一旦第一个控制台窗口关闭,应用程序就会停止。所以这不是你最终的生产技术。为了那个原因....

  1. 在linux上正常运行,使用supervisor + nginx

在 Linux 中,您可以配置supervisor为运行您的应用程序(并使其保持运行)。这类似于应用程序池在 Windows 中所做的工作。

并且nginx是一个流行的网络服务器,类似于在 Windows 上使用 IIS。两者协同工作以运行您的应用程序并向其传递 Web 请求。您设置 nginx 以接收来自互联网的请求并将它们传递给您的应用程序(即“代理它们”通过您的应用程序,也称为充当“反向代理”)

TIL.secretGeek.net 上有关使用主管的详细信息:

要了解如何配置 nginx 以将请求代理到您的应用程序,请尝试此处的文章:

有了这些,您就可以从 Internet 浏览到您的网站(假设您购买了一个域并将其配置为指向网络服务器,或者您可能像所有铁杆书呆子一样通过 IP 地址浏览。)

好的,这是运行您的 asp.net 核心网络应用程序的 6 种不同方式。

(你可以换成nginx其他网络服务器Apache,比如

(您可以使用用户systemdupstart不是主管:这里的注释。)

我做错了什么!?

更新:这个问题的一些答案已经出现......

我写的是 Katana 而不是 Kestrel——修复了。

当然,您也可以在 MS Word 宏中托管 .net 核心应用程序。

我忽略了 Azure。您可以将 .net 核心应用程序部署到 Azure,如果您对此感兴趣,我认为这篇文章很好地介绍了它:将ASP.NET Core 1.0 应用程序部署到 Azure Web 应用程序

只是在开玩笑说 Word 宏。

 类似资料: