如何将 ASP.NET Core Web 应用程序托管到 IIS 服务器

阿里云服务器

如何将 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 服务器中。