Tham chiếu lỗi thường gặp trên Azure App Service và IIS với ASP.NET Core
Bài viết này mô tả các lỗi phổ biến nhất và cung cấp lời khuyên xử lý sự cố khi lưu trữ ứng dụng ASP.NET Core trên Azure App Service và IIS (Internet Information Services - Dịch vụ thông tin Internet).
Xem Xử lý sự cố ASP.NET Core trên Azure App Service và IIS để biết thông tin về lỗi khởi động ứng dụng phổ biến và hướng dẫn chẩn đoán lỗi.
Thu thập thông tin sau:
- Hành vi trình duyệt như mã trạng thái và thông báo lỗi.
- Các mục nhập trong Application Event Log (Nhật ký sự kiện ứng dụng).
- Azure App Service: Xem Xử lý sự cố ASP.NET Core trên Azure App Service và IIS.
- IIS
- Chọn Start trên menu Windows, nhập Event Viewer và nhấn Enter.
- Sau khi Event Viewer mở, mở rộng Windows Logs > Application trong thanh bên.
- Các mục nhập log stdout và debug của ASP.NET Core Module.
- Azure App Service: Xem Xử lý sự cố ASP.NET Core trên Azure App Service và IIS.
- IIS: Làm theo hướng dẫn trong phần Tạo và chuyển hướng log và Log chẩn đoán nâng cao của bài viết về ASP.NET Core Module.
So sánh thông tin lỗi với các lỗi phổ biến sau. Nếu tìm thấy kết quả khớp, hãy làm theo lời khuyên xử lý sự cố.
Danh sách lỗi trong bài viết này không đầy đủ. Nếu bạn gặp lỗi không được liệt kê ở đây, hãy mở issue mới bằng nút Content feedback ở cuối bài viết với hướng dẫn chi tiết về cách tái hiện lỗi.
Quan trọng: Phiên bản preview của ASP.NET Core với Azure App Service
Các phiên bản preview của ASP.NET Core không được triển khai lên Azure App Service theo mặc định. Để lưu trữ ứng dụng sử dụng phiên bản preview của ASP.NET Core, xem Triển khai phiên bản preview ASP.NET Core lên Azure App Service.
Nâng cấp HĐH đã xóa ASP.NET Core Module 32-bit
Application Log: The Module DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll failed to load. The data is the error.
Xử lý sự cố:
Các tệp không phải HĐH trong thư mục C:\Windows\SysWOW64\inetsrv không được bảo toàn trong quá trình nâng cấp HĐH. Nếu ASP.NET Core Module được cài đặt trước khi nâng cấp HĐH và sau đó bất kỳ app pool nào chạy ở chế độ 32-bit sau khi nâng cấp HĐH, vấn đề này sẽ xảy ra. Sau khi nâng cấp HĐH, hãy sửa chữa ASP.NET Core Module. Xem Cài đặt .NET Hosting Bundle. Chọn Repair khi chạy trình cài đặt.
Thiếu site extension, cả hai site extension 32-bit (x86) và 64-bit (x64) được cài đặt, hoặc bitness tiến trình sai
Áp dụng cho ứng dụng được lưu trữ bởi Azure App Services.
- Trình duyệt: HTTP Error 500.0 - ANCM In-Process Handler Load Failure
- Application Log: Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. Could not find inprocess request handler. Captured output from invoking hostfxr: It was not possible to find any compatible framework version. The specified framework 'Microsoft.AspNetCore.App', version '{VERSION}-preview-\*' was not found. Failed to start application '/LM/W3SVC/1416782824/ROOT', ErrorCode '0x8000ffff'.
- Log stdout của ASP.NET Core Module: It was not possible to find any compatible framework version. The specified framework 'Microsoft.AspNetCore.App', version '{VERSION}-preview-\*' was not found.
- Log debug của ASP.NET Core Module: Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. This most likely means the app is misconfigured, please check the versions of Microsoft.NetCore.App and Microsoft.AspNetCore.App that are targeted by the application and are installed on the machine. Failed HRESULT returned: 0x8000ffff. Could not find inprocess request handler. It was not possible to find any compatible framework version. The specified framework 'Microsoft.AspNetCore.App', version '{VERSION}-preview-\*' was not found.
Xử lý sự cố:
- Nếu chạy ứng dụng trên runtime preview, hãy cài đặt site extension 32-bit (x86) hoặc 64-bit (x64) khớp với bitness của ứng dụng và phiên bản runtime của ứng dụng. Không cài đặt cả hai extension hoặc nhiều phiên bản runtime của extension.
- ASP.NET Core {RUNTIME VERSION} (x86) Runtime
- ASP.NET Core {RUNTIME VERSION} (x64) Runtime
Khởi động lại ứng dụng. Chờ vài giây để ứng dụng khởi động lại.
- Nếu chạy ứng dụng trên runtime preview và cả hai site extension 32-bit (x86) và 64-bit (x64) đều được cài đặt, hãy gỡ cài đặt site extension không khớp với bitness của ứng dụng. Sau khi xóa site extension, khởi động lại ứng dụng. Chờ vài giây để ứng dụng khởi động lại.
- Nếu chạy ứng dụng trên runtime preview và bitness của site extension khớp với bitness của ứng dụng, hãy xác nhận rằng runtime version của site extension preview khớp với runtime version của ứng dụng.
- Xác nhận rằng Platform của ứng dụng trong Application Settings khớp với bitness của ứng dụng.
Để biết thêm thông tin, xem Triển khai ứng dụng ASP.NET Core lên Azure App Service.
Ứng dụng x86 được triển khai nhưng app pool chưa bật cho ứng dụng 32-bit
- Trình duyệt: HTTP Error 500.30 - ANCM In-Process Start Failure
- Application Log: Application '/LM/W3SVC/5/ROOT' with physical root '{PATH}' hit unexpected managed exception, exception code = '0xe0434352'. Please check the stderr logs for more information. Application '/LM/W3SVC/5/ROOT' with physical root '{PATH}' failed to load clr and managed application. CLR worker thread exited prematurely
- Log stdout của ASP.NET Core Module: Tệp log được tạo nhưng trống.
- Log debug của ASP.NET Core Module: Failed HRESULT returned: 0x8007023e
Tình huống này được SDK bắt khi xuất bản ứng dụng self-contained. SDK tạo ra lỗi nếu RID không khớp với platform target (ví dụ: RID win10-x64 với <PlatformTarget>x86</PlatformTarget> trong tệp project).
Xử lý sự cố:
Đối với triển khai x86 phụ thuộc framework (<PlatformTarget>x86</PlatformTarget>), hãy bật app pool IIS cho ứng dụng 32-bit. Trong IIS Manager, mở Advanced Settings của app pool và đặt Enable 32-Bit Applications thành True.
Xung đột Platform với RID
- Trình duyệt: HTTP Error 502.5 - Process Failure
- Application Log: Application 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' with physical root 'C:{PATH}' failed to start process with commandline '"C:{PATH}{ASSEMBLY}.{exe|dll}" ', ErrorCode = '0x80004005 : ff.
- Log stdout của ASP.NET Core Module: Unhandled Exception: System.BadImageFormatException: Could not load file or assembly '{ASSEMBLY}.dll'. An attempt was made to load a program with an incorrect format.
Xử lý sự cố:
- Xác nhận rằng ứng dụng chạy cục bộ trên Kestrel. Lỗi tiến trình có thể là do vấn đề bên trong ứng dụng. Để biết thêm thông tin, xem Xử lý sự cố ASP.NET Core trên Azure App Service và IIS.
- Nếu ngoại lệ này xảy ra cho triển khai Azure Apps khi nâng cấp ứng dụng và triển khai các assembly mới hơn, hãy xóa thủ công tất cả tệp từ triển khai trước đó. Các assembly không tương thích còn sót lại có thể dẫn đến ngoại lệ
System.BadImageFormatExceptionkhi triển khai ứng dụng được nâng cấp.
URI endpoint sai hoặc website đã dừng
- Trình duyệt: ERR_CONNECTION_REFUSED --HOẶC-- Unable to connect
- Application Log: Không có mục nhập
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
- Log debug của ASP.NET Core Module: Tệp log không được tạo.
Xử lý sự cố:
- Xác nhận URI endpoint đúng đang được sử dụng cho ứng dụng. Kiểm tra bindings (ràng buộc).
- Xác nhận rằng website IIS không ở trạng thái Stopped (Đã dừng).
Tính năng máy chủ CoreWebEngine hoặc W3SVC bị vô hiệu hóa
OS Exception: The IIS 7.0 CoreWebEngine and W3SVC features must be installed to use the ASP.NET Core Module.
Xử lý sự cố:
Xác nhận rằng role và tính năng phù hợp được bật. Xem Cấu hình IIS.
Đường dẫn vật lý website sai hoặc ứng dụng bị thiếu
- Trình duyệt: 403 Forbidden - Access is denied --HOẶC-- 403.14 Forbidden - The Web server is configured to not list the contents of this directory.
- Application Log: Không có mục nhập
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
- Log debug của ASP.NET Core Module: Tệp log không được tạo.
Xử lý sự cố:
Kiểm tra Basic Settings của website IIS và thư mục ứng dụng vật lý. Xác nhận rằng ứng dụng ở trong thư mục tại Physical path của website IIS.
Role sai, ASP.NET Core Module không được cài đặt, hoặc quyền không đúng
- Trình duyệt: 500.19 Internal Server Error - The requested page cannot be accessed because the related configuration data for the page is invalid. --HOẶC-- This page can't be displayed
- Application Log: Không có mục nhập
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
- Log debug của ASP.NET Core Module: Tệp log không được tạo.
Xử lý sự cố:
- Xác nhận rằng role phù hợp được bật. Xem Cấu hình IIS.
- Mở Programs & Features hoặc Apps & features và xác nhận rằng Windows Server Hosting được cài đặt. Nếu Windows Server Hosting không có trong danh sách chương trình đã cài đặt, hãy tải xuống và cài đặt .NET Hosting Bundle.
Trình cài đặt .NET Hosting Bundle hiện tại (tải trực tiếp)
Để biết thêm thông tin, xem Cài đặt .NET Hosting Bundle.
- Đảm bảo rằng Application Pool > Process Model > Identity được đặt thành ApplicationPoolIdentity hoặc identity tùy chỉnh có quyền đúng để truy cập thư mục triển khai của ứng dụng.
- Nếu bạn đã gỡ cài đặt ASP.NET Core Hosting Bundle và cài đặt phiên bản hosting bundle cũ hơn, tệp applicationHost.config không có phần cho ASP.NET Core Module. Mở applicationHost.config tại %windir%/System32/inetsrv/config và tìm nhóm phần
<configuration><configSections><sectionGroup name="system.webServer">. Nếu phần cho ASP.NET Core Module bị thiếu trong nhóm phần, hãy thêm phần tử phần:
``xml <section name="aspNetCore" overrideModeDefault="Allow" /> ``
Hoặc cài đặt phiên bản mới nhất của ASP.NET Core Hosting Bundle. Phiên bản mới nhất tương thích ngược với các ứng dụng ASP.NET Core được hỗ trợ.
processPath sai, thiếu biến PATH, Hosting Bundle không được cài đặt, hệ thống/IIS chưa khởi động lại, VC++ Redistributable không được cài đặt, hoặc vi phạm truy cập dotnet.exe
- Trình duyệt: HTTP Error 500.0 - ANCM In-Process Handler Load Failure
- Application Log: Application 'MACHINE/WEBROOT/APPHOST/{ASSEMBLY}' with physical root 'C:{PATH}' failed to start process with commandline '"{...}" ', ErrorCode = '0x80070002 : 0. Application '{PATH}' wasn't able to start. Executable was not found at '{PATH}'. Failed to start application '/LM/W3SVC/2/ROOT', ErrorCode '0x8007023e'.
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
- Log debug của ASP.NET Core Module: Event Log: 'Application '{PATH}' wasn't able to start. Executable was not found at '{PATH}'. Failed HRESULT returned: 0x8007023e
Xử lý sự cố:
- Xác nhận rằng ứng dụng chạy cục bộ trên Kestrel.
- Kiểm tra thuộc tính processPath trên phần tử
<aspNetCore>trong web.config để xác nhận rằng nó làdotnetcho framework-dependent deployment (FDD) hoặc.\{ASSEMBLY}.execho self-contained deployment (SCD). - Đối với FDD, dotnet.exe có thể không truy cập được qua cài đặt PATH. Xác nhận rằng C:\Program Files\dotnet\ tồn tại trong cài đặt PATH hệ thống.
- Đối với FDD, dotnet.exe có thể không truy cập được đối với user identity của app pool. Xác nhận rằng user identity của app pool có quyền truy cập vào thư mục C:\Program Files\dotnet.
- FDD có thể đã được triển khai và .NET được cài đặt mà không khởi động lại IIS. Hãy khởi động lại máy chủ hoặc khởi động lại IIS bằng cách thực thi net stop was /y theo sau là net start w3svc từ command prompt.
- FDD có thể đã được triển khai mà không cài đặt .NET runtime trên hệ thống hosting. Nếu .NET runtime chưa được cài đặt, hãy chạy .NET Hosting Bundle installer trên hệ thống.
Trình cài đặt .NET Hosting Bundle hiện tại (tải trực tiếp)
Để biết thêm thông tin, xem Cài đặt .NET Hosting Bundle.
Nếu cần runtime cụ thể, hãy tải runtime từ trang .NET Downloads và cài đặt trên hệ thống. Hoàn tất cài đặt bằng cách khởi động lại hệ thống hoặc khởi động lại IIS bằng cách thực thi net stop was /y theo sau là net start w3svc từ command prompt.
Arguments sai của phần tử <aspNetCore>
- Trình duyệt: HTTP Error 500.0 - ANCM In-Process Handler Load Failure
- Application Log: Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. This most likely means the app is misconfigured, please check the versions of Microsoft.NetCore.App and Microsoft.AspNetCore.App that are targeted by the application and are installed on the machine. Could not find inprocess request handler. Captured output from invoking hostfxr: Did you mean to run dotnet SDK commands? Please install dotnet SDK from: https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 Failed to start application '/LM/W3SVC/3/ROOT', ErrorCode '0x8000ffff'.
Xử lý sự cố:
- Xác nhận rằng ứng dụng chạy cục bộ trên Kestrel.
- Kiểm tra thuộc tính arguments trên phần tử
<aspNetCore>trong web.config để xác nhận rằng nó là (a).\{ASSEMBLY}.dllcho framework-dependent deployment (FDD); hoặc (b) không có, chuỗi rỗng (arguments=""), hoặc danh sách các arguments của ứng dụng (arguments="{ARGUMENT_1}, {ARGUMENT_2}, ... {ARGUMENT_X}") cho self-contained deployment (SCD).
Thiếu .NET shared framework
- Trình duyệt: HTTP Error 500.0 - ANCM In-Process Handler Load Failure
- Application Log: Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. This most likely means the app is misconfigured, please check the versions of Microsoft.NetCore.App and Microsoft.AspNetCore.App that are targeted by the application and are installed on the machine. Could not find inprocess request handler. Captured output from invoking hostfxr: It was not possible to find any compatible framework version. The specified framework 'Microsoft.AspNetCore.App', version '{VERSION}' was not found. Failed to start application '/LM/W3SVC/5/ROOT', ErrorCode '0x8000ffff'.
Xử lý sự cố:
Đối với framework-dependent deployment (FDD), hãy xác nhận rằng runtime đúng được cài đặt trên hệ thống.
Application Pool đã dừng
- Trình duyệt: 503 Service Unavailable
- Application Log: Không có mục nhập
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
- Log debug của ASP.NET Core Module: Tệp log không được tạo.
Xử lý sự cố:
Xác nhận rằng Application Pool không ở trạng thái Stopped (Đã dừng).
Ứng dụng con bao gồm phần <handlers>
- Trình duyệt: HTTP Error 500.19 - Internal Server Error
- Application Log: Không có mục nhập
- Log stdout của ASP.NET Core Module: Tệp log của ứng dụng gốc được tạo và hiển thị hoạt động bình thường. Tệp log của ứng dụng con không được tạo.
- Log debug của ASP.NET Core Module: Tệp log của ứng dụng gốc được tạo và hiển thị hoạt động bình thường. Tệp log của ứng dụng con không được tạo.
Xử lý sự cố:
Xác nhận rằng tệp web.config của ứng dụng con không bao gồm phần <handlers> hoặc ứng dụng con không kế thừa handlers của ứng dụng cha.
Phần <system.webServer> của ứng dụng cha trong web.config được đặt bên trong phần tử <location>. Thuộc tính InheritInChildApplications được đặt thành false để chỉ ra rằng các cài đặt được chỉ định trong phần tử <location> không được kế thừa bởi các ứng dụng trong thư mục con của ứng dụng cha. Để biết thêm thông tin, xem ASP.NET Core Module (ANCM) cho IIS.
Đường dẫn log stdout sai
- Trình duyệt: Ứng dụng phản hồi bình thường.
- Application Log: Could not start stdout redirection in C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll. Exception message: HRESULT 0x80070005 returned at {PATH}\aspnetcoremodulev2\commonlib\fileoutputmanager.cpp:84. Could not stop stdout redirection in C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll. Exception message: HRESULT 0x80070002 returned at {PATH}. Could not start stdout redirection in {PATH}\aspnetcorev2_inprocess.dll.
- Log stdout của ASP.NET Core Module: Tệp log không được tạo.
Xử lý sự cố:
- Đường dẫn
stdoutLogFileđược chỉ định trong phần tử<aspNetCore>của web.config không tồn tại. Để biết thêm thông tin, xem ASP.NET Core Module: Tạo và chuyển hướng log. - User của app pool không có quyền ghi vào đường dẫn log stdout.
Vấn đề cấu hình ứng dụng chung
- Trình duyệt: HTTP Error 500.0 - ANCM In-Process Handler Load Failure --HOẶC-- HTTP Error 500.30 - ANCM In-Process Start Failure
- Application Log: Variable (Thay đổi)
- Log stdout của ASP.NET Core Module: Tệp log được tạo nhưng trống hoặc được tạo với các mục nhập bình thường cho đến điểm ứng dụng thất bại.
- Log debug của ASP.NET Core Module: Variable (Thay đổi)
Xử lý sự cố:
Tiến trình không khởi động được, rất có thể do vấn đề cấu hình ứng dụng hoặc lập trình.
Để biết thêm thông tin, xem các bài viết sau: