Khắc phục lỗi IIS 500.19: Cách sửa mã lỗi 0x8007000d

intermediate🪟 Windows2026-07-16| Windows Server 2016/2019/2022, IIS 10.0, ASP.NET Core, URL Rewrite Module

Error Message

The requested page cannot be accessed because the related configuration data for the page is invalid. (Error Code 0x8007000d)
#iis#asp.net-core#devops#khắc-phục-lỗi

Vấn đề

Bạn vừa hoàn tất việc triển khai ứng dụng web của mình lên Internet Information Services (IIS). Mọi thứ hoạt động hoàn hảo trên máy phát triển cục bộ, nhưng ngay khi bạn truy cập trang web thực tế, bạn gặp phải một rào cản. Thay vì trang chủ, bạn thấy lỗi 500.19 Internal Server Error. Đó là một cơn ác mộng "chạy tốt trên máy tôi" điển hình.

Thông báo lỗi cụ thể thường trông như thế này:

The requested page cannot be accessed because the related configuration data for the page is invalid. (Error Code 0x8007000d)

Lỗi này gây khó chịu vì nó ám chỉ rằng tệp web.config của bạn bị hỏng. Ngay cả khi cú pháp XML của bạn trông có vẻ hoàn hảo, IIS vẫn từ chối nó. Thông thường, cấu hình không thực sự "không hợp lệ" về mặt cấu trúc. Thay vào đó, IIS chỉ đơn giản là không nhận diện được các thẻ cụ thể—như <aspNetCore>—vì module bắt buộc chưa được cài đặt trên máy chủ.

Các nguyên nhân phổ biến

Mã lỗi 0x8007000d có nghĩa là "Dữ liệu không hợp lệ." Trong thế giới của IIS, đây hầu như luôn là do thiếu một thành phần phụ thuộc. Dưới đây là ba lý do chính dẫn đến tình trạng này:

  • Thiếu ASP.NET Core Hosting Bundle: Bạn đang triển khai ứng dụng .NET 6, 7 hoặc 8, nhưng máy chủ không có ASP.NET Core Module (ANCM) để đọc phần <aspNetCore>.
  • Thiếu URL Rewrite Module: Cấu hình của bạn sử dụng các quy tắc <rewrite> cho URL thân thiện với SEO hoặc định tuyến SPA, nhưng tiện ích mở rộng URL Rewrite 2.1 chưa được cài đặt.
  • Lỗi định dạng XML: Có một lỗi cú pháp thực sự tồn tại, chẳng hạn như thiếu thẻ đóng hoặc "ngoặc kép thông minh" vô tình được dán từ tài liệu Word.

Các bước khắc phục

1. Cài đặt ASP.NET Core Hosting Bundle

Nếu bạn đang chạy một ứng dụng .NET hiện đại, đây là điều đầu tiên cần kiểm tra. IIS không thể chạy các ứng dụng .NET Core một cách trực tiếp. Nó cần Hosting Bundle để đóng vai trò là cầu nối giữa máy chủ web và mã ứng dụng của bạn.

  • Xác minh phiên bản ứng dụng của bạn. Ví dụ: nếu bạn xây dựng ứng dụng bằng .NET 8.0.x, bạn cần gói bundle tương ứng.
  • Truy cập trang tải xuống .NET chính thức.
  • Tải xuống Hosting Bundle cho Windows. Trình cài đặt khoảng 65MB này bao gồm runtime và module hỗ trợ IIS cần thiết.
  • Chạy trình cài đặt trên Windows Server của bạn.
  • Khởi động lại IIS: Bước này là bắt buộc. Trình cài đặt sẽ cố gắng thực hiện việc này, nhưng việc đặt lại thủ công sẽ đảm bảo các module mới được tải. Mở command prompt với quyền Administrator và chạy:
net stop was /y
net start w3svc

Mặc dù iisreset nhanh hơn, nhưng việc dừng Windows Process Activation Service (WAS) sẽ đáng tin cậy hơn vì nó buộc tất cả các worker process phải đóng hoàn toàn.

2. Cài đặt URL Rewrite Module

Nhiều framework hiện đại, đặc biệt là các SPA React hoặc Angular, dựa vào phần <rewrite> trong web.config để xử lý định tuyến phía client. Nếu IIS gặp thẻ <rewrite> mà không có module được cài đặt, nó sẽ lập tức báo lỗi 0x8007000d.

  • Tải xuống URL Rewrite Module 2.1 từ trang web IIS chính thức.
  • Hoàn tất cài đặt và khởi động lại IIS Manager.
  • Kiểm tra để đảm bảo các quy tắc rewrite của bạn được lồng chính xác bên trong thẻ <system.webServer>.

3. Kiểm tra cú pháp XML của web.config

Nếu các module đã được cài đặt nhưng lỗi vẫn còn, hãy kiểm tra các vấn đề cú pháp ẩn. Những sai sót nhỏ có thể làm hỏng toàn bộ trang web.

  • Ký tự ẩn: Đảm bảo không có "ngoặc kép thông minh" (ngoặc kép cong) thay thế cho ngoặc kép thẳng tiêu chuẩn trong quá trình sao chép-dán.
  • Phân biệt chữ hoa chữ thường: XML phân biệt chữ hoa chữ thường. Đảm bảo <system.webServer> không bị viết thành <System.WebServer>.
  • Mã hóa (Encoding): Lưu tệp web.config của bạn cụ thể với mã hóa UTF-8.

Một mẹo nhỏ là kéo tệp web.config của bạn vào một trình duyệt như Chrome. Nếu trình duyệt hiển thị lỗi phân tích cú pháp XML, bạn đã tìm thấy một lỗi cú pháp mà IIS không thể xử lý.

Xác minh

Xác nhận việc cài đặt bằng cách kiểm tra danh sách module của IIS:

  • Mở IIS Manager.
  • Nhấp vào tên máy chủ của bạn trong ngăn kết nối bên trái.
  • Nhấp đúp vào biểu tượng Modules ở khu vực trung tâm.
  • Tìm kiếm AspNetCoreModuleV2 hoặc RewriteModule.
  • Tải lại trang web của bạn. Lỗi 500.19 sẽ biến mất, thay vào đó là nội dung thực tế của ứng dụng.

Mẹo chuyên nghiệp để triển khai mượt mà hơn

Các lỗi cấu hình thường len lỏi vào trong quá trình triển khai tự động. Nếu bạn sử dụng các pipeline CI/CD như GitHub Actions hoặc Azure DevOps, một lỗi thụt lề duy nhất trong quá trình chuyển đổi YAML có thể làm hỏng đầu ra XML cuối cùng.

Tôi thường sử dụng trình chuyển đổi YAML sang JSON tại ToolCraft để kiểm tra dữ liệu nguồn của mình. Bằng cách chuyển đổi logic cấu hình sang các định dạng khác nhau, tôi có thể dễ dàng phát hiện các lỗi lồng cấu trúc trước khi chúng được đưa lên máy chủ production.

Lastly, check your Application Pool settings. Đối với các ứng dụng ASP.NET Core, bạn nên đặt ".NET CLR Version" thành No Managed Code. Vì Hosting Bundle chạy ứng dụng bên ngoài, IIS không cần tải .NET runtime cũ, giúp tiết kiệm bộ nhớ và ngăn ngừa xung đột phiên bản.

Related Error Notes