如何将 ASP.NET Core Web 应用程序托管到本地 IIS 服务器
在本文中,我将讨论如何将 ASP.NET Core Web 应用程序托管到本地 IIS 服务器。请阅读我们之前的文章,其中讨论了使用 WebOptimizer 在 ASP.NET Core 中进行捆绑和压缩的示例。
什么是托管 Web 应用程序?
托管 Web 应用程序是指通过 Internet 向用户提供应用程序的过程。从更专业的术语来说,它涉及将您的应用程序放在 Web 服务器上,Web 服务器是专门设计用于存储、处理和向用户提供网页的计算机系统。
什么是 IIS 服务器?
IIS(Internet 信息服务)服务器是 Microsoft 创建的 Web 服务器软件。它用于托管网站和 Web 应用程序,是 Windows Server 系列产品的一部分。IIS 服务器的主要功能和特性包括:
托管网站和 Web 应用程序: IIS 主要用于托管网站,为使用 ASP.NET、PHP 和其他技术开发的 Web 应用程序提供平台。
支持各种协议:支持HTTP、HTTPS、FTP、FTPS、SMTP和NNTP协议。
安全功能: IIS 提供多种内置安全功能,如身份验证、授权和 SSL 支持,以确保安全通信并保护敏感数据。
可扩展性和定制性:可以使用各种模块和处理程序进行扩展和定制。这允许开发人员根据其特定需求添加或增强功能。
管理工具: IIS 附带用于配置和管理 Web 服务器和站点的管理工具。其中包括 IIS 管理器、图形用户界面和命令行工具。
应用程序池:此功能允许隔离不同的 Web 应用程序,从而提高安全性和稳定性。每个应用程序池都可以使用自己的设置和自己的身份运行。
性能特点: IIS 包含提高性能的功能,例如缓存、压缩和负载平衡。
与 Microsoft 技术集成:它与其他 Microsoft 技术和服务(如 Windows Server、Active Directory 和 SQL Server)紧密集成。
如何将 ASP.NET Core Web APP 托管到 IIS 服务器
在本地 IIS 服务器上托管 ASP.NET Core Web 应用程序涉及几个步骤。让我们继续详细了解这些步骤:
安装 IIS
首先,确保您的机器上安装了 Internet 信息服务 (IIS)。
在 Windows 10/11 上:转到控制面板 > 程序 > 程序和功能 > 打开或关闭 Windows 功能。检查 Internet 信息服务,然后单击确定,如下图所示:
安装 .NET Core 托管包
下载并安装 .NET Core 托管包。它包括 .NET 运行时、.NET 库和 ASP.NET Core 模块。此模块是托管 ASP.NET Core 应用程序所必需的。要安装 .NET Core 托管包,请访问以下网站,并根据 .NET Core 应用程序版本安装所需的 .NET Core 运行时。我将安装 .NET Core 6 托管包,因为我已经使用 .NET 6 开发了一个应用程序。
https://dotnet.microsoft.com/en-us/download/dotnet/6.0
访问上述 URL 后,将打开以下页面。请从此页面下载托管包,如下图所示。建议在 Windows 上安装包含 .NET 运行时和 IIS 支持的托管包。
下载 .NET Core Hosting Bundle 后,请将其安装到您的机器上。
注意: ASP.NET Core Hosting Bundle 包含运行现有 Web/服务器应用程序所需的一切。该包包括 .NET 运行时和 ASP.NET Core 运行时,如果安装在具有 IIS 的计算机上,它还将添加 ASP.NET Core IIS 模块。如果您只需要 .NET 或 ASP.NET Core 运行时,您可以在 .NET 6.0 下载中找到它们。
创建 ASP.NET Core 应用程序
让我们使用模型视图控制器项目模板和 .NET 6 创建一个新的 ASP.NET Core 应用程序。我们将应用程序名称定为 CoreWebApp。该项目将使用以下文件夹结构创建:
现在,我们需要将上述应用程序部署到 IIS 中。
发布您的 ASP.NET Core 应用程序
我们需要发布应用程序以将 ASP.NET Core 应用程序部署到 IIS。因此,首先,在您的机器中创建一个文件夹,您需要在其中存储应用程序的已发布代码。我将在我的机器的 D 盘中创建一个名为 CoreAppPublished 的文件夹:
要发布应用程序,请在 Visual Studio 中右键单击您的项目,然后从上下文菜单中选择“发布”选项,这将打开以下窗口。在这里,您需要选择如何发布应用程序。在此窗口中,请选择文件夹选项,然后单击下一步按钮:
发布 ASP.NET Core 应用程序时,您有多个部署目标选项,每个选项都适用于不同的目的和场景。以下是您提到的选项的简要概述:
Azure: Azure 是 Microsoft 的云计算平台,提供用于托管 Web 应用程序的 Azure App Service 等服务。发布到 Azure 意味着您的 ASP.NET Core 应用程序将托管在云中,从而受益于 Azure 的可扩展性、安全性以及与其他 Azure 服务的集成。
文件夹:发布到文件夹会创建一组文件,这些文件可以托管在任何安装了相应 .NET 运行时的服务器上。这是一个灵活的选项,因为您可以手动将这些文件复制到服务器、创建要分发的包或将它们用作更大的部署过程的一部分。
FTP/FTPS 服务器:文件传输协议 (FTP) 或 FTP 安全 (FTPS) 是一种标准网络协议,用于在计算机网络上的客户端和服务器之间传输计算机文件。发布到 FTP/FTPS 服务器涉及将应用程序文件传输到远程服务器。这是共享托管环境或需要更直接的文件级控制的服务器的常见选择。
Web 服务器:此选项意味着将您的应用程序直接部署到 Web 服务器,例如 IIS、Apache 或 Nginx。这通常涉及更多手动步骤,包括设置服务器环境、配置 Web 服务器以及直接部署应用程序文件。
导入配置文件:导入配置文件允许您从配置文件导入发布设置。如果您有预定义设置或要将设置从一个环境迁移到另一个环境,此功能非常有用。发布配置文件可以包含部署到特定目标所需的所有设置。
Docker 容器注册表: Docker 是一个用于在容器中开发、交付和运行应用程序的平台。发布到 Docker 容器注册表涉及将 ASP.NET Core 应用程序打包到 Docker 容器中并将其推送到容器注册表(如 Docker Hub 或 Azure 容器注册表)。这种方法有利于确保跨环境的一致性,因为容器既包含您的应用程序,又包含其依赖项。
单击下一步按钮后,将打开以下窗口。在这里,您需要选择要发布应用程序文件的文件夹。我们在 D 盘中创建了一个名为 CoreAppPublished 的文件夹,因此选择该文件夹,然后单击完成按钮:
单击“完成”按钮后,将打开以下“准备发布”窗口。在此窗口中,您需要单击“发布”按钮。
点击发布按钮后,发布应用程序文件需要一些时间。
在 IIS 中创建站点:
打开 IIS 管理器。在“连接”窗格中右键单击“站点”,然后选择“添加网站”。提供站点名称。对于物理路径,浏览到您发布应用程序的文件夹。分配端口号(例如 8080,以避免与默认网站冲突)。单击“确定”以创建站点。
这还将自动创建一个与您的站点名称同名的应用程序池:
配置应用程序池
在 IIS 管理器中,转到应用程序池。右键单击新的应用程序池 (MyCoreMVCApp) 并选择高级设置。将.NET CLR 版本更改为无托管代码,因为 ASP.NET Core 在其自己的运行时中运行,然后单击确定按钮。
修改权限
确保IIS_IUSRS组有权访问已发布的应用程序文件夹。右键单击文件夹 > 属性 > 安全。如果未列出,请编辑以添加 IIS_IUSRS,并授予其读取和执行权限。
测试应用程序
打开 Web 浏览器并导航到http://localhost:[PortNumber],其中 [PortNumber] 是您在 IIS 中分配给网站的端口。我已分配端口号 8083,因此我将访问 URL http://localhost:8083/ 。
故障排除
如果遇到错误,请检查 Windows 事件日志和应用程序日志以了解详细信息。
确保 ASP.NET Core 模块已正确安装。
检查应用程序池是否配置为使用无托管代码。
其他注意事项
对于生产环境,可能需要更多配置,如 SSL、日志记录等。
在投入生产之前,请务必在本地环境中彻底测试您的应用程序。
我将讨论如何在托管 ASP.NET Core 应用程序时在本地 IIS 服务器中使用 SSL。在本文中,我尝试解释如何在本地 IIS 服务器中托管 ASP.NET Core Web 应用程序。我希望您喜欢这篇文章,如何将 ASP.NET Core Web 应用程序托管到本地 IIS 服务器中。