Nguon: Microsoft Learn · .NET 8.0

Host (lưu trữ) và Deploy (triển khai) ASP.NET Core

Nguồn: Host and deploy ASP.NET Core | Phiên bản: .NET 8.0

Trong bài này

Lưu ý: Đây không phải phiên bản mới nhất của bài viết này. Để xem phiên bản hiện tại, hãy xem bài viết phiên bản .NET 10.

Cảnh báo: Phiên bản ASP.NET Core này không còn được hỗ trợ. Để biết thêm thông tin, hãy xem Chính sách hỗ trợ .NET và .NET Core. Để xem phiên bản hiện tại, hãy xem bài viết phiên bản .NET 10.

Nhìn chung, để deploy (triển khai) một ứng dụng ASP.NET Core lên môi trường hosting (lưu trữ):

Để có hướng dẫn host (lưu trữ) và deploy (triển khai) cho Blazor — bổ sung hoặc thay thế hướng dẫn trong phần này — hãy xem Host and deploy ASP.NET Core Blazor.

Publish (xuất bản) ra thư mục

Lệnh dotnet publish biên dịch code ứng dụng và sao chép các tệp cần thiết để chạy ứng dụng vào thư mục publish. Khi deploy (triển khai) từ Visual Studio, bước dotnet publish xảy ra tự động trước khi các tệp được sao chép đến đích deploy (triển khai).

Chạy ứng dụng đã publish (xuất bản) cục bộ

Để chạy ứng dụng đã publish (xuất bản) cục bộ, hãy chạy lệnh dotnet <ApplicationName>.dll từ thư mục publish.

Publish (xuất bản) các tệp cài đặt

Các tệp *.json được publish (xuất bản) theo mặc định. Để publish (xuất bản) các tệp cài đặt khác, hãy chỉ định chúng trong phần tử <ItemGroup><Content Include= ... /> trong tệp project. Ví dụ sau đây publish (xuất bản) các tệp XML:

xml
<ItemGroup>
  <Content Include="**\*.xml" Exclude="bin\**\*;obj\**\*"
    CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>

Nội dung thư mục

Thư mục publish chứa một hoặc nhiều tệp assembly của ứng dụng, các dependencies (phụ thuộc), và tùy chọn là .NET runtime.

Một ứng dụng .NET Core có thể được publish (xuất bản) dưới dạng self-contained deployment (triển khai độc lập) hoặc framework-dependent deployment (triển khai phụ thuộc framework). Nếu ứng dụng là self-contained (độc lập), các tệp assembly chứa .NET runtime sẽ được bao gồm trong thư mục publish. Nếu ứng dụng là framework-dependent (phụ thuộc framework), các tệp .NET runtime sẽ không được bao gồm vì ứng dụng có tham chiếu đến một phiên bản .NET đã được cài đặt trên máy chủ. Mô hình deploy (triển khai) mặc định là framework-dependent (phụ thuộc framework). Để biết thêm thông tin, hãy xem .NET Core application deployment.

Ngoài các tệp .exe.dll, thư mục publish cho một ứng dụng ASP.NET Core thường chứa các tệp cấu hình, static assets (tài nguyên tĩnh) và MVC views. Để biết thêm thông tin, hãy xem ASP.NET Core directory structure.

Thiết lập Process Manager (trình quản lý tiến trình)

Một ứng dụng ASP.NET Core là một console app phải được khởi động khi máy chủ boot và khởi động lại nếu nó bị crash. Để tự động hóa việc khởi động và khởi động lại, cần có một process manager (trình quản lý tiến trình). Các process manager phổ biến nhất cho ASP.NET Core là:

Thiết lập Reverse Proxy (proxy ngược)

Nếu ứng dụng sử dụng máy chủ Kestrel, thì Nginx hoặc IIS (Internet Information Services) có thể được dùng làm máy chủ reverse proxy (proxy ngược). Máy chủ reverse proxy (proxy ngược) nhận các yêu cầu HTTP từ Internet và chuyển tiếp chúng đến Kestrel.

Cả hai cấu hình — có hoặc không có máy chủ reverse proxy (proxy ngược) — đều là cấu hình hosting (lưu trữ) được hỗ trợ. Để biết thêm thông tin, hãy xem When to use Kestrel with a reverse proxy.

Các kịch bản Proxy Server và Load Balancer (cân bằng tải)

Có thể cần cấu hình bổ sung cho các ứng dụng được host (lưu trữ) phía sau proxy servers và load balancers (cân bằng tải). Nếu không có cấu hình bổ sung, ứng dụng có thể không có quyền truy cập vào scheme (HTTP/HTTPS) và địa chỉ IP từ xa nơi một yêu cầu xuất phát. Để biết thêm thông tin, hãy xem Configure ASP.NET Core to work with proxy servers and load balancers.

Sử dụng Visual Studio và MSBuild để tự động hóa Deployment (triển khai)

Deployment (triển khai) thường đòi hỏi các tác vụ bổ sung ngoài việc sao chép đầu ra từ dotnet publish lên máy chủ. Ví dụ: có thể cần thêm hoặc loại trừ các tệp ngoài khỏi thư mục publish. Visual Studio sử dụng MSBuild cho web deployment (triển khai web), và MSBuild có thể được tùy chỉnh để thực hiện nhiều tác vụ khác trong quá trình deployment (triển khai). Để biết thêm thông tin, hãy xem Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment và cuốn sách Using MSBuild and Team Foundation Build.

Bằng cách sử dụng tính năng Publish Web, các ứng dụng có thể được deploy (triển khai) trực tiếp từ Visual Studio lên Azure App Service. Azure DevOps Services hỗ trợ continuous deployment (triển khai liên tục) lên Azure App Service. Để biết thêm thông tin, hãy xem DevOps for ASP.NET Core Developers.

Publish (xuất bản) lên Azure

Xem Publish an ASP.NET Core app to Azure with Visual Studio để biết hướng dẫn cách publish (xuất bản) ứng dụng lên Azure bằng Visual Studio. Một ví dụ bổ sung được cung cấp bởi Create an ASP.NET Core web app in Azure.

Publish (xuất bản) với MSDeploy trên Windows

Xem Visual Studio publish profiles (.pubxml) for ASP.NET Core app deployment để biết hướng dẫn cách publish (xuất bản) ứng dụng với Visual Studio publish profile, bao gồm từ command prompt (dấu nhắc lệnh) trên Windows sử dụng lệnh dotnet msbuild.

Internet Information Services (IIS)

Để deploy (triển khai) lên Internet Information Services (IIS) với cấu hình được cung cấp bởi tệp web.config, hãy xem các bài viết trong Host ASP.NET Core on Windows with IIS.

Host (lưu trữ) trong Web Farm

Để biết thông tin về cấu hình hosting (lưu trữ) các ứng dụng ASP.NET Core trong môi trường web farm (ví dụ: triển khai nhiều instance của ứng dụng để tăng khả năng mở rộng), hãy xem Host ASP.NET Core in a web farm.

Host (lưu trữ) trên Docker (container)

Để biết thêm thông tin, hãy xem Host ASP.NET Core in Docker containers.

Thực hiện Health Checks (kiểm tra sức khỏe)

Sử dụng Health Check Middleware (phần mềm trung gian kiểm tra sức khỏe) để thực hiện kiểm tra sức khỏe trên ứng dụng và các dependencies (phụ thuộc) của nó. Để biết thêm thông tin, hãy xem Health checks in ASP.NET Core.

Tài nguyên bổ sung