

Triển khai và xuất bản ứng dụng ASP.NET Core
- 03-07-2025
- Toanngo92
- 0 Comments
Mục lục
15.1 Giới thiệu về Web Server
Các Web server là những ứng dụng phần mềm hoặc phần cứng chuyên xử lý các yêu cầu và cung cấp nội dung Web đến người dùng qua Internet. Chúng hoạt động như trung gian giữa thiết bị khách (như trình duyệt web) và hệ thống phía máy chủ lưu trữ ứng dụng web.
15.1.1 Web Server là gì?
Web server là ứng dụng chuyên biệt xử lý các yêu cầu HTTP đến từ client (ví dụ: trình duyệt web) và trả về nội dung Web (như trang HTML, hình ảnh, video,…). Nó chạy trên một kiến trúc máy chủ và thường lắng nghe yêu cầu trên cổng mặc định 80 cho HTTP và 443 cho HTTPS.
15.1.2 Vai trò của Web Server trong việc lưu trữ ứng dụng ASP.NET Core
Trong bối cảnh ứng dụng ASP.NET Core, Web server đóng vai trò quan trọng trong việc tiếp nhận yêu cầu HTTP, định tuyến đến ứng dụng, xử lý và trả về kết quả. ASP.NET Core có thể được lưu trữ trên các Web server khác nhau, mỗi loại có những tính năng và khả năng riêng biệt.
15.1.3 Một số Web Server phổ biến
Một số Web server phổ biến dùng để lưu trữ ứng dụng ASP.NET Core bao gồm:
- Internet Information Services (IIS): Được Microsoft phát triển, là Web server phổ biến nhất trên nền Windows. Hỗ trợ mạnh mẽ cho ứng dụng ASP.NET Core, tích hợp chặt chẽ với hệ điều hành Windows, hỗ trợ các giao thức bảo mật, tùy chọn mở rộng và khả năng mở rộng quy mô.
- Apache HTTP Server: Là Web server mã nguồn mở thường dùng trên hệ điều hành Linux. Hỗ trợ nhiều ngôn ngữ và framework, bao gồm cả ASP.NET Core thông qua các mô-đun như
mod_mono
vàmod_proxy
. - Nginx: Một Web server nhẹ và hiệu năng cao, nổi tiếng với khả năng xử lý nhiều kết nối đồng thời. Nginx có thể được dùng làm proxy hoặc lưu trữ trực tiếp ứng dụng ASP.NET Core qua ASP.NET Core Module cho Nginx. Thường dùng trên Linux hơn là Windows.
15.2 Quy trình triển khai trong Visual Studio 2022
Visual Studio 2022 cung cấp công cụ và tính năng toàn diện để triển khai ứng dụng ASP.NET Core. Dù là triển khai local, staging hay cloud (như Azure), Visual Studio đều cung cấp các tùy chọn triển khai hiệu quả.
15.2.1 Tổng quan các tùy chọn triển khai trong Visual Studio 2022
Các tùy chọn triển khai gồm:
- Folder Deployment (Triển khai thư mục)
Cho phép xuất bản ứng dụng ASP.NET Core vào thư mục cục bộ. Thường dùng để kiểm thử hoặc cài đặt thủ công. - Publish to IIS (Triển khai đến IIS)
Tích hợp với IIS trên máy cục bộ, cho phép xuất bản trực tiếp từ Visual Studio đến IIS. Đảm bảo trải nghiệm liền mạch và giảm cấu hình thủ công. - Publish to Azure (Triển khai lên Azure)
Visual Studio tích hợp hỗ trợ triển khai ứng dụng lên Azure App Service, Azure VM, Azure Kubernetes,… Đây là một phần của hệ sinh thái Microsoft Azure, giúp đơn giản hóa việc xuất bản ứng dụng lên cloud.
15.2.2 Hồ sơ xuất bản và cấu hình
Visual Studio cho phép tạo “publishing profiles” để xác định các thiết lập và cấu hình cho việc triển khai. Hồ sơ xuất bản lưu thông tin như đích đến, tùy chọn kết nối, tùy chọn triển khai và thông số bổ sung khác.
Các khía cạnh chính của hồ sơ xuất bản gồm:
- Target Environment: Chọn môi trường đích như thư mục, IIS hoặc Azure App Service.
- Connection Settings: Cung cấp chi tiết kết nối như URL máy chủ từ xa hoặc cloud.
- Deployment Options: Cấu hình bố cục hệ thống, tập lệnh (pre/post-deployment), tối ưu hóa,…
- Additional Parameters: Thêm tham số dòng lệnh hoặc thiết lập bổ sung.
Bằng cách tạo nhiều profile, nhà phát triển có thể dễ dàng chuyển đổi giữa các cấu hình triển khai và hợp lý hóa quy trình xuất bản.
15.2.3 Triển khai đến Local IIS hoặc Azure App Service
- Triển khai Local IIS:
Visual Studio cho phép xuất bản trực tiếp đến IIS, đơn giản hóa việc kiểm thử và triển khai trên máy cục bộ. - Triển khai Azure App Service:
Visual Studio hỗ trợ xuất bản lên Azure App Service với cấu hình tối thiểu. Nhà phát triển có thể tận dụng các tính năng Azure như CI/CD, mở rộng quy mô, cấu hình cloud,…
Dưới đây là bản dịch chi tiết của các trang bạn vừa gửi, bao gồm phần 15.3 đến 15.6 trong Session 15:
15.3 Cấu hình Ứng dụng ASP.NET Core để chạy trên IIS
Yêu cầu về hosting của ASP.NET Core khác với ASP.NET truyền thống vì cấu hình của chúng cũng khác. IIS – một máy chủ web hoạt động trên hệ điều hành Windows (và thuộc framework ASP.NET truyền thống) – thường được sử dụng để host các ứng dụng ASP.NET Core.
Mỗi dự án ASP.NET Core về bản chất là một ứng dụng console có điểm khởi đầu là file Program.cs
. Mã tự động sinh ra trong file Program.cs
được thể hiện trong Code Snippet 1:
Code Snippet 1
var builder = WebApplication.CreateBuilder(args);
// Thêm các dịch vụ vào container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Cấu hình pipeline xử lý HTTP
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// HSTS mặc định là 30 ngày. Bạn có thể thay đổi cho môi trường production
// Xem thêm: https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Để cấu hình và tạo website host, ASP.NET Core sử dụng lớp WebApplication
, cung cấp một cách tiếp cận đơn giản hóa để cấu hình ứng dụng ASP.NET Core. Thay vì WebHostBuilder
, các nhà phát triển hiện sử dụng WebApplication.CreateBuilder
. Phương thức UseKestrel()
vẫn thường được sử dụng để cấu hình Kestrel là máy chủ web, còn UseIISIntegration()
được dùng để kích hoạt tích hợp với IIS.
15.4 Triển khai ASP.NET Core lên IIS
Để triển khai một ứng dụng ASP.NET Core lên IIS, thực hiện các bước sau:
Bước 1: Cấu hình IIS
- Mở Control Panel, sau đó vào Programs như hình 15.1.
Hình 15.1: Control Panel

Bước 2:
- Nhấn vào Turn Windows features on or off, đánh dấu chọn Internet Information Services và tất cả các tùy chọn con của nó. Nhấn OK (hình 15.2).
Hình 15.2: Bật các tính năng Windows

Bước 3:
- Khởi động ứng dụng Internet Information Services (IIS) Manager, nhấn Open như hình 15.3.
Hình 15.3: Ứng dụng IIS

Bước 4:
- Trong cửa sổ IIS Manager, để khai báo thông tin về website, nhấn vào Sites như hình 15.4.
Hình 15.4: Sites trong IIS Manager

Bước 5:
- Cung cấp thông tin về website trong cửa sổ Add Website:
- Nhập tên website (Site Name), nhóm ứng dụng (Application Pool), và đường dẫn vật lý (Physical Path).
- Hình 15.5 cho thấy thư mục được tạo trong
wwwroot
là nơi chứa các file của website. - Nhập Host Name – việc này giúp khi triển khai có thể truy cập qua Host Name mà không cần IP.
Hình 15.5: Đường dẫn vật lý

Hình 15.6: Cửa sổ Thêm Website

Bước 6: Bước tiếp theo là chỉnh sửa file hosts trong hệ thống. Mở Notepad và nhấn Run as administrator để mở bằng quyền Admin như hiển thị ở Hình 15.7.

File hosts
nằm ở đường dẫn:
Windows → System32 → drivers → etc
Xem Hình 15.8 để tham khảo.

Bước 7: Mở file thông qua Notepad ở chế độ Administrator. Trừ khi bạn mở bằng quyền Admin, file sẽ không thể lưu sau khi chỉnh sửa.
File hosts sau khi mở sẽ có nội dung như hiển thị ở Hình 15.9.

Ghi chú bổ sung từ Hình 15.9:
Nội dung file hosts
minh họa việc ánh xạ hostname đến địa chỉ IP cục bộ:
127.0.0.1 ProjectMVCCatalog
Dòng này giúp truy cập trang web vừa thêm vào IIS bằng hostname thay vì IP hoặc localhost
.
Bước 8: Cuối cùng, để ánh xạ tên miền localhost
tới DeployMVCCoreApp.com
trong file hosts
, thêm dòng sau:
127.0.0.1 DeployMVCCoreApp.com
Như minh hoạ trong Hình 15.10.

Ví dụ:
127.0.0.1 DeployMVCCoreApp.com
Bước 9: Tiếp theo, để publish ứng dụng, mở Visual Studio 2022 IDE.
Chọn Publish như minh họa ở Hình 15.11.

Bước 10: Để chọn mục tiêu publish hoặc triển khai ứng dụng, có nhiều tuỳ chọn khác nhau.
Azure cho phép publish lên nền tảng đám mây Microsoft. Trong ví dụ này, ứng dụng được deploy thông qua thư mục có tên DeployMVCCoreApp nằm trong thư mục wwwroot
.
Hệ thống không cấu hình IIS riêng mà sử dụng tuỳ chọn Folder trong Visual Studio để publish.
Chọn Folder, sau đó cung cấp đường dẫn thư mục trong mục Folder Location như minh họa ở Hình 15.12 và Hình 15.13.


Bước 11: Cuối cùng, nhấn Publish như minh họa trong Hình 15.14 để publish toàn bộ ứng dụng web vào thư mục đích trên IIS.

Kết quả:
- Sau khi publish, một thông báo “Build succeeded” được hiển thị trong cửa sổ Output như minh họa ở Hình 15.15.

- Tiếp theo, mở thư mục
wwwroot
để xem các file ứng dụng đã được tạo như trong Hình 15.16.

Bước 12: Để mở ứng dụng qua IIS, chọn ứng dụng đã tạo và click chuột phải chọn:
Manage Website → Browse
(Tham khảo Hình 15.17)

Vấn đề:
Khi nhấn Browse, một lỗi xuất hiện:
HTTP Error 500.19 – Internal Server Error
(Tham khảo Hình 15.18)

Nguyên nhân:
Lỗi này xuất hiện do máy chưa được cài đặt Hosting Bundle Services.
Giải pháp:
Mở liên kết sau:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/hosting-bundle?view=aspnetcore-6.0
Và tải gói cài đặt Hosting Bundle như minh họa trong Hình 15.19 và Hình 15.20.


Sau khi cài đặt Hosting Bundle:
Lặp lại bước Browse sau khi cài đặt Hosting Bundle.
Lúc này, màn hình Welcome của ứng dụng sẽ hiển thị như minh họa trong Hình 15.21.

Ghi chú: Việc triển khai ứng dụng ASP.NET MVC có thể được thực hiện bằng cách làm theo các bước tương tự.
15.5 Thủ tục cài đặt các tính năng Windows và Gói lưu trữ .NET Core (Hosting Bundle)
.NET Core Hosting Bundle là một gói được cung cấp bởi Microsoft, bao gồm .NET Core Runtime, ASP.NET Core Runtime và ASP.NET Core Module cho IIS. Đây là thành phần thiết yếu để lưu trữ các ứng dụng ASP.NET Core trên máy chủ Windows, vì nó cung cấp các thành phần cần thiết và môi trường thực thi để chạy ứng dụng ASP.NET Core trong môi trường Dịch vụ Thông tin Internet (Internet Information Services – IIS).
Giới thiệu về .NET Core Hosting Bundle
Gói lưu trữ .NET Core được thiết kế để đơn giản hóa việc triển khai và lưu trữ các ứng dụng ASP.NET Core trên máy chủ Windows. Nó bao gồm các thành phần sau:
- .NET Core Runtime:
Đây là môi trường thời gian chạy đa nền tảng giúp thực thi các ứng dụng .NET Core. Nó cung cấp các thư viện, framework và thời gian chạy cần thiết để thực hiện các ứng dụng .NET Core. - ASP.NET Core Runtime:
Đây là môi trường thời gian chạy được thiết kế riêng cho các ứng dụng ASP.NET Core. Nó bao gồm ASP.NET Core framework và các thành phần thiết yếu để xử lý các yêu cầu HTTP, quản lý session, và các chức năng web khác. - ASP.NET Core Module cho IIS:
ASP.NET Core Module (ANCM) là một mô-đun dành cho IIS được sử dụng để lưu trữ các ứng dụng ASP.NET Core trong IIS. Nó xử lý các tác vụ như định tuyến request, quản lý quy trình, và tích hợp với pipeline của IIS, cho phép triển khai liền mạch các ứng dụng ASP.NET Core trên IIS.
Mục đích và Lợi ích của Gói Hosting
Gói lưu trữ .NET Core phục vụ nhiều mục đích và mang lại nhiều lợi ích cho việc lưu trữ ứng dụng ASP.NET Core:
- Triển khai đơn giản:
Bằng cách gói các thành phần thời gian chạy cần thiết, gói hosting đơn giản hóa quá trình triển khai các ứng dụng ASP.NET Core trên máy chủ Windows. Các nhà phát triển có thể triển khai ứng dụng với sự tự tin rằng các thành phần cần thiết đã được bao gồm. - Hiệu suất được cải thiện:
Gói hosting bao gồm các thành phần runtime được tối ưu hóa dành riêng cho các ứng dụng ASP.NET Core, dẫn đến hiệu suất và hiệu quả cao hơn so với các bản runtime mặc định. - Tích hợp liền mạch với IIS:
ASP.NET Core Module cho IIS cho phép tích hợp liền mạch giữa các ứng dụng ASP.NET Core và máy chủ web IIS. Nó xử lý các tác vụ như định tuyến yêu cầu, quản lý quy trình và cấu hình, đảm bảo hoạt động trơn tru của các ứng dụng ASP.NET Core trong môi trường IIS.
Hướng dẫn cài đặt từng bước trên Windows
Thực hiện các bước sau để cài đặt Gói lưu trữ .NET Core trên máy chủ Windows:
- Tải về Gói Hosting:
Truy cập trang web chính thức của Microsoft (https://dotnet.microsoft.com/download/dotnet) để tải về gói .NET Core Hosting phù hợp với phiên bản Windows của bạn. - Chạy trình cài đặt:
Sau khi tải xong, chạy file thực thi của trình cài đặt (.exe) để bắt đầu quá trình cài đặt. - Chấp nhận các điều khoản cấp phép:
Đọc và chấp nhận các điều khoản cấp phép được trình bày trong quá trình cài đặt. - Chọn tùy chọn cài đặt:
Chọn các thành phần cài đặt dựa trên nhu cầu. Thông thường, bạn sẽ muốn cài đặt tất cả các thành phần: .NET Core Runtime, ASP.NET Core Runtime và ASP.NET Core Module for IIS. - Hoàn tất cài đặt:
Làm theo các hướng dẫn để hoàn tất quá trình cài đặt. Cài đặt các thiết lập máy chủ cần thiết, định cấu hình các cài đặt dịch vụ, và đăng ký các thành phần theo yêu cầu. - Khởi động lại máy chủ:
Sau khi hoàn tất cài đặt, hãy khởi động lại máy chủ để áp dụng các thay đổi và đảm bảo rằng các thành phần đã cài đặt hoạt động như mong đợi.
Xác minh cài đặt và xử lý sự cố thường gặp
Để xác minh cài đặt Gói lưu trữ .NET Core và xử lý sự cố, bạn nên làm các bước sau:
- Kiểm tra các thành phần đã cài đặt:
Đảm bảo rằng .NET Core Runtime, ASP.NET Core Runtime và ASP.NET Core Module for IIS đã được cài đặt đúng cách bằng cách sử dụng Control Panel → Programs and Features trong Windows. - Kiểm tra ứng dụng ASP.NET Core:
Triển khai một ứng dụng đơn giản ASP.NET Core lên máy chủ Windows và đảm bảo rằng nó chạy thành công trong môi trường IIS. - Xem nhật ký sự kiện (Event Logs):
Kiểm tra Windows Event Viewer để tìm bất kỳ thông báo lỗi hoặc cảnh báo nào liên quan đến việc cài đặt hoặc vận hành Gói lưu trữ .NET Core. Nhật ký sự kiện có thể cung cấp thông tin hữu ích để chẩn đoán các sự cố tiềm ẩn hoặc cấu hình sai. - Tham khảo tài liệu và hỗ trợ:
Tham khảo tài liệu chính thức của Microsoft và các nguồn hỗ trợ để được hướng dẫn giải quyết các sự cố cấu hình cụ thể. Các diễn đàn trực tuyến, thảo luận cộng đồng và các kênh hỗ trợ cũng có thể cung cấp sự trợ giúp từ người dùng có kinh nghiệm và đội ngũ hỗ trợ của Microsoft.