.NET trên Windows Server — tóm tắt nhanh
.NET (tên cũ: .NET Core) là nền tảng chạy ứng dụng đa nền tảng của Microsoft. Trên Windows Server, bạn cần cài đúng một trong ba loại gói — Runtime, SDK, hoặc ASP.NET Core Hosting Bundle — tùy mục đích sử dụng. Sau khi cài, lệnh dotnet --info cho biết đầy đủ phiên bản đang có mà không cần khởi động lại máy chủ.
- Chạy ứng dụng .NET: cài Runtime
- Build và phát triển trên server: cài SDK
- Deploy website ASP.NET Core lên IIS: cài Hosting Bundle
- Kiểm tra phiên bản:
dotnet --infohoặcdotnet --list-runtimes
Deploy ứng dụng ASP.NET Core lên IIS xong nhưng trình duyệt trả về lỗi 502.5 – ANCM Out-of-Process Startup Failure? Nguyên nhân phổ biến nhất không phải lỗi code, mà là server thiếu đúng gói .NET hoặc cài nhầm loại. Runtime và Hosting Bundle trông giống nhau trên trang download, nhưng IIS chỉ nhận diện được ứng dụng ASP.NET Core khi có đúng Hosting Bundle — không phải Runtime đơn thuần.
Bài này hướng dẫn từ việc chọn đúng phiên bản và loại gói, cài đặt step-by-step, đến kiểm tra phiên bản ngay sau khi cài để xác nhận mọi thứ đã sẵn sàng. Phần cuối tổng hợp các lỗi thường gặp để bạn không mất thêm thời gian debug.

.NET Runtime, SDK và Hosting Bundle — ba gói khác nhau
Trang download của Microsoft liệt kê nhiều lựa chọn, nhưng thực tế trên Windows Server chỉ xoay quanh ba loại:
| Loại gói | Bao gồm | Dùng khi nào |
|---|---|---|
| .NET Runtime | Chỉ đủ để chạy ứng dụng .NET đã được build sẵn | Server chỉ cần chạy ứng dụng console hoặc Windows Service, không dùng IIS |
| ASP.NET Core Runtime | .NET Runtime + thư viện ASP.NET Core | Chạy ứng dụng web qua reverse proxy (Nginx/Apache) — không cài module IIS |
| .NET SDK | Runtime + compiler + .NET CLI + build tools | Môi trường phát triển, CI/CD cần build source code trực tiếp trên server |
| ASP.NET Core Hosting Bundle | ASP.NET Core Runtime + .NET Runtime + IIS Module (ANCM) | Bắt buộc nếu deploy website ASP.NET Core lên IIS |
Lưu ý quan trọng: SDK bao gồm Runtime, nhưng SDK không bao gồm IIS Module. Cài SDK mà không cài Hosting Bundle thì IIS vẫn không nhận diện được ứng dụng ASP.NET Core.
Nên cài SDK trên server production không?
Không khuyến nghị. SDK nặng hơn Runtime khoảng 3–4 lần và chứa compiler, debugger — những thứ không cần thiết trên server chạy thật. Thực hành chuẩn là build ứng dụng ở máy dev hoặc CI/CD pipeline, rồi publish artifact lên server. Server chỉ cần Runtime hoặc Hosting Bundle là đủ.
Chọn phiên bản .NET nào cho Windows Server
Microsoft chia .NET thành hai vòng đời hỗ trợ:
- LTS (Long-Term Support): hỗ trợ 3 năm — phù hợp cho production. Các phiên bản LTS là số chẵn: .NET 6, .NET 8, .NET 10.
- STS (Standard-Term Support): hỗ trợ 18 tháng — phù hợp nếu muốn dùng tính năng mới nhất nhưng chấp nhận nâng cấp thường xuyên hơn. Các phiên bản STS là số lẻ: .NET 7, .NET 9.
Cho môi trường production vào thời điểm hiện tại, .NET 8.0 LTS là lựa chọn hợp lý nhất — hỗ trợ đến tháng 11/2026 và đã đủ ổn định. .NET 9.0 (STS) phù hợp nếu ứng dụng của bạn cần tính năng mới như Native AOT cải tiến hoặc Blazor Web App, và team sẵn sàng nâng cấp sau 18 tháng.
Một server có thể cài song song nhiều phiên bản .NET mà không xung đột — ví dụ cả .NET 6 và .NET 8. Mỗi App Pool trong IIS có thể chỉ định dùng phiên bản nào.
Hướng dẫn cài đặt .NET trên Windows Server
Bước 1: Tải đúng gói từ trang chính thức
Truy cập https://dotnet.microsoft.com/download, chọn phiên bản cần cài (ví dụ .NET 8.0), sau đó chọn tab Windows. Trên trang này bạn sẽ thấy ba cột tải: SDK, Runtime, và ASP.NET Core Runtime.
Để tìm Hosting Bundle — gói cần thiết cho IIS — cuộn xuống phần “Hosting Bundle” hoặc tìm trong mục “.NET 8.0 Windows Server Hosting”. File có tên dạng dotnet-hosting-8.x.x-win.exe, kích thước khoảng 70–80 MB.
Bước 2: Cài đặt trên Windows Server
Chạy file .exe vừa tải với quyền Administrator (chuột phải → Run as administrator). Wizard cài đặt khá đơn giản, chủ yếu là Accept License → Install → Close.
Một vài điểm cần chú ý trong quá trình cài:
- Nếu IIS đang chạy, wizard sẽ tự động dừng IIS trong lúc cài và khởi động lại sau khi hoàn tất.
- Không cần restart toàn bộ Windows Server sau khi cài Hosting Bundle. Chỉ cần restart IIS App Pool có liên quan là ứng dụng nhận phiên bản .NET mới ngay.
- Nếu cài Runtime đơn thuần (không phải Hosting Bundle), IIS không bị ảnh hưởng và không cần restart gì cả.
Bước 3 (tùy chọn): Cài đặt tự động bằng command line
Với sysadmin cần deploy trên nhiều server hoặc tích hợp vào script tự động hóa, Hosting Bundle hỗ trợ silent install:
dotnet-hosting-8.x.x-win.exe /install /quiet /norestart
Tham số /quiet bỏ qua toàn bộ giao diện wizard. /norestart ngăn máy tự khởi động lại — hữu ích khi bạn cần kiểm soát thời điểm restart trong maintenance window.
Để ghi log cài đặt ra file (tiện debug nếu cài thất bại):
dotnet-hosting-8.x.x-win.exe /install /quiet /norestart /log C:\install-dotnet.log
Cách kiểm tra phiên bản .NET đã cài
Cách nhanh nhất: lệnh dotnet --info
Mở PowerShell hoặc Command Prompt (không cần quyền admin) và chạy:
dotnet --info
Output sẽ liệt kê đầy đủ: phiên bản SDK đang active, danh sách tất cả Runtime đã cài, và thông tin môi trường (OS, kiến trúc CPU, đường dẫn cài đặt). Ví dụ một phần output điển hình:
.NET SDKs installed:
8.0.401 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Nếu bạn chỉ cần danh sách runtime mà không cần thông tin môi trường, lệnh ngắn hơn:
dotnet --list-runtimes
Và để kiểm tra SDK:
dotnet --list-sdks
Kiểm tra từ Windows Apps & Features
Vào Settings → Apps → Apps & Features, tìm kiếm “Microsoft .NET”. Cách này cho thấy các gói đã cài kèm phiên bản, nhưng không phân biệt rõ loại Runtime — ít thực dụng hơn so với lệnh CLI.
Kiểm tra IIS Module đã nhận Hosting Bundle chưa
Sau khi cài Hosting Bundle, mở IIS Manager → Modules, kiểm tra có module tên AspNetCoreModuleV2 xuất hiện không. Nếu không thấy, Hosting Bundle cài chưa thành công hoặc IIS chưa được reset đúng cách.
| Phương pháp | Lệnh / Cách | Cho biết | Dùng khi nào |
|---|---|---|---|
| dotnet CLI | dotnet --info |
SDK, Runtime, thông tin hệ thống | Kiểm tra toàn diện sau khi cài |
| dotnet CLI | dotnet --list-runtimes |
Chỉ danh sách Runtime | Cần xác nhận nhanh version |
| IIS Manager | Modules → AspNetCoreModuleV2 | IIS có nhận Hosting Bundle không | Sau khi cài Hosting Bundle |
| Apps & Features | Tìm “Microsoft .NET” | Danh sách gói đã cài | Kiểm tra nhanh qua GUI |
Lỗi thường gặp khi cài .NET trên Windows Server
Lỗi 1: Cài Runtime nhưng IIS vẫn báo lỗi 502.5
Đây là lỗi phổ biến nhất. Nguyên nhân: cài .NET Runtime hoặc ASP.NET Core Runtime nhưng quên cài Hosting Bundle. IIS cần module ANCM (AspNetCoreModuleV2) để làm cầu nối với process .NET — module này chỉ có trong Hosting Bundle.
Cách khắc phục: Tải và cài Hosting Bundle. Sau đó chạy iisreset trong Command Prompt hoặc restart App Pool liên quan.
Lỗi 2: dotnet không được nhận sau khi cài
Sau khi cài Runtime hoặc SDK, mở CMD gõ dotnet --version nhưng nhận lỗi “dotnet” is not recognized. Nguyên nhân: biến môi trường PATH chưa cập nhật trong phiên làm việc hiện tại.
Cách khắc phục: Đóng Command Prompt/PowerShell và mở lại. Nếu vẫn không nhận, kiểm tra PATH có chứa C:\Program Files\dotnet\ chưa. Nếu chưa có, thêm thủ công qua System Properties → Environment Variables.
Lỗi 3: Nhiều phiên bản .NET gây nhầm lẫn App Pool
Khi server có cả .NET 6, .NET 7, và .NET 8, App Pool sẽ dùng phiên bản nào? Câu trả lời: .NET tự chọn phiên bản phù hợp nhất với TargetFramework khai báo trong file .csproj của ứng dụng — gọi là roll-forward policy. Tuy nhiên, nếu ứng dụng yêu cầu .NET 6 mà server chỉ có .NET 8, cần kiểm tra xem ứng dụng có tương thích với roll-forward không.
Cách kiểm tra cấu hình roll-forward của ứng dụng: xem file runtimeconfig.json trong thư mục publish, mục rollForward.
Lỗi 4: Cài Hosting Bundle nhưng IIS Manager không thấy module ANCM
Xảy ra khi IIS được cài sau khi Hosting Bundle đã cài trước đó, hoặc khi cài Hosting Bundle mà IIS chưa được enable. Module ANCM không tự động đăng ký lại.
Cách khắc phục: Chạy lại file installer của Hosting Bundle, chọn option Repair. Thao tác này đăng ký lại module vào IIS mà không cài mới toàn bộ.
Cần VPS Windows Server để deploy ứng dụng .NET?
InterData cung cấp VPS Windows Server với license bản quyền, cấu hình mạnh mẽ, hoạt động ổn định, hỗ trợ kỹ thuật 24/7 — phù hợp để chạy ứng dụng ASP.NET Core, API .NET, hoặc các hệ thống doanh nghiệp.
- Phần cứng thế hệ mới, ổ cứng NVMe U.2 tốc độ cao
- IP riêng, băng thông không giới hạn
- Hỗ trợ cài đặt .NET, SQL Server theo yêu cầu
Câu hỏi thường gặp về cài đặt .NET trên Windows Server
Cài .NET Hosting Bundle có cần restart Windows Server không?
Không bắt buộc restart toàn bộ máy chủ. Sau khi cài Hosting Bundle, chỉ cần restart IIS (chạy lệnh iisreset) hoặc restart đúng App Pool đang chạy ứng dụng ASP.NET Core. Các ứng dụng khác trên cùng server không bị ảnh hưởng.
Một Windows Server có thể cài nhiều phiên bản .NET cùng lúc không?
Có. .NET hỗ trợ cài song song nhiều phiên bản trên cùng một máy — ví dụ .NET 6, .NET 8, .NET 9 cùng tồn tại mà không xung đột. Mỗi ứng dụng sẽ dùng đúng phiên bản Runtime mà nó được build với, hoặc phiên bản gần nhất theo roll-forward policy.
Làm sao biết ứng dụng đang dùng phiên bản .NET nào?
Hai cách nhanh nhất: (1) Xem file [tên-app].runtimeconfig.json trong thư mục publish — trường tfm cho biết Target Framework; (2) Trong IIS Manager, xem phần Configuration Editor của site, mục system.webServer/aspNetCore → trường processPath.
.NET 8 LTS và .NET 9 STS — chọn cái nào cho server production?
.NET 8 LTS phù hợp hơn cho hầu hết trường hợp production. Microsoft cam kết hỗ trợ bản vá bảo mật và bug fix đến tháng 11/2026 — tức là team không phải lo nâng cấp trong vòng 2 năm tới. .NET 9 STS chỉ nên chọn nếu ứng dụng cần tính năng mới cụ thể của .NET 9 và team có quy trình nâng cấp định kỳ.
Có thể gỡ cài đặt phiên bản .NET cũ sau khi nâng cấp không?
Được. Vào Settings → Apps → Apps & Features, tìm phiên bản .NET Runtime cần gỡ và uninstall. Tuy nhiên, kiểm tra trước xem có ứng dụng nào đang dùng phiên bản đó không bằng lệnh dotnet --list-runtimes và đối chiếu với runtimeconfig.json của các ứng dụng đang chạy.
Tổng kết
Điểm mấu chốt khi làm việc với .NET trên Windows Server là chọn đúng loại gói ngay từ đầu. Cài Runtime khi chỉ cần chạy ứng dụng, cài Hosting Bundle khi dùng IIS, tránh cài SDK lên server production. Sau khi cài, dotnet --info là lệnh xác nhận nhanh nhất và đáng tin nhất.
Nếu đang triển khai hệ thống trên VPS Windows Server tại InterData và cần hỗ trợ cài đặt môi trường .NET, đội kỹ thuật InterData có thể hỗ trợ trực tiếp qua hotline 1900 636 822.
