ASP 变量 第 2.6 部分 - 同时 ASP.NET Core两个应用程序
发布时间:2022-10-21 15:18:32 所属栏目:Asp教程 来源:
导读: 第 2.6 部分 - 同时 ASP.NET Core两个应用程序本文内容
适用于: .NET Core 2.1、.NET Core 3.1、.NET 5
本文讨论如何使两个 ASP.NET Core应用程序并行运行、侦听不同的端口并处理传入请求。
适用于: .NET Core 2.1、.NET Core 3.1、.NET 5
本文讨论如何使两个 ASP.NET Core应用程序并行运行、侦听不同的端口并处理传入请求。
|
第 2.6 部分 - 同时 ASP.NET Core两个应用程序本文内容 适用于: .NET Core 2.1、.NET Core 3.1、.NET 5 本文讨论如何使两个 ASP.NET Core应用程序并行运行、侦听不同的端口并处理传入请求。 先决条件 若要完成本教程的这一部分,应设置以下各项: 本系列 ASP.NET Core中使用的第一个演示应用程序是 ASP.NET Core 5.0 应用程序。 第二个应用程序是 ASP.NET Core 3.1 应用程序。 如果没有安装 .NET Core 3.1 和 .NET 5.0 SDK,请安装缺少的 SDK,然后再继续。 备注 可以通过运行 命令来检查已安装的运行时和 SDK dotnet --info 版本。 本系列的上一部分讨论了 .NET Core 安装。 此部分的目标 在此部分的末尾,你将有两个并行 ASP.NET Core应用程序,侦听不同的端口和处理传入的请求。 此部分将执行大多数操作将类似:为第二个 ASP.NET Core 应用程序创建一个服务文件,以便它可以在服务器重新启动或进程停止时启动。 运行第二个应用程序 将第二个应用程序作为类似于正在运行的第一个应用程序的服务运行。 创建服务文件之前,请确保它正确运行。 回想一下,在之前几章中,您被指示将测试调试应用程序复制到 /var/buggyamb_v1.1/ 目录,然后使用 命令运行 dotnet /var/buggyamb_v1.1/BuggyAmb.dll 该应用程序。 You may receive the following error message: System.IO.IOException:无法绑定到地址 :5000 : 地址已在使用中。 IO 错误消息的屏幕截图。 根据此消息,另一个进程已在使用端口 5000。 这很明显。 但是,如何了解使用端口的过程? 通过运行 sudo netstat -tulpn | grep 5000 命令。 在下面的屏幕截图中,PID 为 , 12536 进程名称为 dotnet 。 你很可能会看到你的进程 ID 会有所不同: sudo netstat 命令的屏幕截图。 下一步是了解哪个 ASP.NET Core应用程序由侦听端口 5000 的 dotnet 进程承载。 可以运行 cat /proc/12536/cmdline 命令获取类似于以下屏幕截图的结果。 这是本系列中 ASP.NET Core配置的第一个应用程序。 它在端口 5000 上侦听。 因此,我们 ASP.NET Core错误应用程序不能在同一端口上侦听。 备注 你在此处了解了一些新内容。 有一个名为 /proc 的目录。 如果列出此目录的内容,你将看到为当时正在运行的每个 PID 命名的目录。 每个子文件夹将具有多个文件,您可以使用这些文件获取每个进程的属性,如命令行以及内存或 CPU 信息。 现在不要关注这一点,因为我们将在介绍工具和流程时进行讨论。 端口冲突问题的解决方案不是停止运行第一个应用程序。 因为目标是让两个应用程序同时运行,所以解决方案实际上是在不同的端口 ASP.NET Core第二个应用程序。 将第二 ASP.NET Core应用程序配置为侦听其他端口 有不同方法可以实现此目标: 环境变量和命令行参数方法都是要考虑的选项。 尝试测试 --urls 选项,如以下屏幕截图所示。 dotnet urls 命令的屏幕截图。 请记住,目标是将应用程序作为服务运行。 这需要您具有一个可在其中设置环境变量的服务文件。 您可以如前所示设置可执行命令,也可以设置环境变量。 以下示例使用环境变量将应用程序配置为侦听备用端口。 为第二个应用程序创建服务单元文件 您将在服务单元文件中使用以下服务定义。 请记住,第二个应用程序将在 /var/buggyamb_v1.1 目录中运行。 备注 Environment=ASPNETCORE_URLS=http://localhost:5001该行将声明一个名为 的环境变量, ASPNETCORE_URLS 并告知我们的应用程序侦听端口 5001: [Unit] Description=BuggyAmb is a really buggy application [Service] WorkingDirectory=/var/buggyamb_v1.1/ ExecStart=/usr/bin/dotnet /var/buggyamb_v1.1/BuggyAmb.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=buggyamb-identifier User=www-data Environment=ASPNETCORE_ENVIRONMENT=Development Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false Environment=ASPNETCORE_URLS=http://localhost:5001 [Install] WantedBy=multi-user.target 服务文件名将为 buggyamb.service, 将在 /etc/systemd/system/ 目录中创建。 和之前一样,使用 vi 编辑器并运行 sudo vi /etc/systemd/system/buggyamb.service 命令来创建服务定义文件。 复制并粘贴此配置,然后保存它。 同样,请注意如何设置 ASPNETCORE_URLS 环境变量: sudo vi 命令的屏幕截图。 现在,你已将 buggy ASP.NET Core Web 应用程序配置为作为守护程序运行。 这是否足以达到我们在培训开始时所规定的目标? 通过运行 和 命令启用 sudo systemctl enable buggyamb.service 和 sudo systemctl start buggyamb.service 启动服务。 然后通过运行 来检查服务状态 systemctl status buggyamb.service ,如以下屏幕截图所示。 systemctl 状态命令的屏幕截图。 此时,你可以检查 BuggyAmb 应用程序是否正常工作。 运行 curl localhost:5001 命令,使"欢迎"页的 BuggyAmb HTML 显示在控制台中,如以下屏幕截图所示。 显示 localhost 命令的屏幕截图。 无法从客户端测试应用程序,因为它正在侦听端口 5001。 防火墙设置中不允许此端口。 由于 Nginx 不会向 Internet 公开端口,因此您可以配置 Nginx 以侦听端口 80,当使用特定主机名提出传入 HTTP 请求时,将流量路由到 BuggyAmb。 例如,可以使用主机名: 或 。 您还可以使用您需要的其他任何主机名。 目前,目标是使第二个 ASP.NET Core应用程序与第一个演示应用程序并行运行。 下一章中ASP 变量,我们将继续配置 Nginx,如此部分所介绍。 后续步骤 第 2.7 部分 - 在 Nginx 中配置具有主机名的第二个网站 (编辑:海洋资讯信息网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
