Tìm lỗi ứng dụng ASP.NET Core trên Windows Server sử dụng stdout log
Một số lỗi trong lúc khởi động hệ thống ASP.NET Core trên Windows Server mà chúng ta chưa rõ nguyên nhân tại sao ứng dụng không hoạt động. Vậy bạn có thể dùng đểns stdout để chẩn đoán lỗi.
Thông thường khi deploy ứng dụng ASP.NET Core lên Windows Server mình thường gặp một số lỗi thông dụng sau:
1. Do Windows Server chưa cài bản Dotnet Core Runtime hoặc cài rồi nhưng không đúng phiên bản
2. Sai cấu hình chuỗi kết nối
3. Một số lỗi liên quan quyền hệ thống hoặc config trên IIS
Các lỗi xảy ra khi đã khởi động được ứng dụng thì thường do chức năng logging của ứng dụng ghi lại nhưng còn các lỗi xảy ra lúc khởi động thì nó chưa chạy vào chức năng ghi log của ứng dụng. Mà lại là trên server nên chúng ta rất khó xác định.
Mình xin giới thiệu đến các bạn tính năng stdout log của ASP.NET giúp các bạn xem log rất dễ dàng. Chả là khi các bạn publish ứng dụng nó cũng vẫn tạo cho chúng ta một file web.config rất đơn giản thường như sau:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\WebApp.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Các bạn có thấy phần cấu hình trong thẻ <aspNetCore> có thuộc tính stdoutLogEnabled="false" không? Mặc định mình đang để là false vì nếu không cần tìm lỗi thì các bạn nên tắt nó đi. Tiếp theo là thuộc tính stdoutLogFile sẽ ghi file log ra thư mục đó ở đây là thư mục logs/stdout trong thư mục root của ứng dụng.
Nếu thư mục logs chưa tồn tại thì các bạn nên tạo nó nhé. Khi các bạn enable lên thì nhớ vào hosting set quyền ghi file cho Application Pools có thể ghi file vào thư mục logs này nhé. Tên file sau khi sinh ra sẽ là stdout_timestamp.log và các bạn có thể xem được lỗi.
Setup xong thì lưu file web.config lại rồi thử chạy lại ứng dụng.
Sau khi tìm lỗi xong các bạn nên set lại stdoutLogEnabled là false để không ghi log thừa ra nhé và đảm bảo performance lẫn bảo mật.
Nếu trong trường hợp các bạn vẫn chưa tìm ra lỗi hoặc log không ghi ra thì có thể do lỗi phía IIS hoặc Windows, các bạn có thể tra tiếp trong Event Viewer --> Windows Logs --> Application của Windows. Cái này các bạn tìm trong thanh tìm kiếm là ra nhé.
Tác giả: Bạch Ngọc Toàn
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.
Bài viết liên quan
Xây dựng menu đa cấp với ASP.NET Core MVC
Cách xây dựng menu đa cấp sử dụng đệ quy trong ASP.NET Core MVC
Đọc thêm
Tìm hiểu về ABP Framework, một framework mã nguồn mở trên .NET
ABP Framework là một framework hoàn chỉnh để xây dựng ứng dụng web hiện đại bằng cách áp dụng các best practice và tiêu chuẩn trong phát triển phần mềm.
Đọc thêmVòng đời của Dependency Injection: Transient, Singleton và Scoped
Hiểu về vòng đời của các service được tạo sử dụng Dependency Injection là rất quan trọng trước khi sử dụng chúng.
Đọc thêm
Cơ chế Dependency Injection trong ASP.NET Core
Dependency Injection giờ đã trở thành thành phần chính thức mặc định của ASP.NET Core.
Đọc thêm
Unobtrusive Client Validation trong ASP.NET Corre
Trong bài viết này chúng ta sẽ thực hiện validation phía client sử dụng Javascript.
Đọc thêm
Validation Tag Helper trong ASP.NET Core
ASP.NET cung cấp các tag helper liên quan đến hiển thị validation message cho người dùng.
Đọc thêm
Model Validation trong ASP.NET Core
Bài viết này chúng ta sẽ học về cơ chế Model Validation.
Đọc thêm
Cơ chế Model Binding: Truyền dữ liệu từ View lên Controller
Trong cơ chế Model Binding của ASP.NET Core chúng ta sẽ học cách làm sao để truyền dữ liệu từ View lên Controller.
Đọc thêm
Environment Tag Helper trong ASP.NET Core
Environment tag helper hỗ trợ tạo ra các nội dung phụ thuộc vào biến quy định môi trường trong ASP.NET Core.
Đọc thêm
Input Tag Helper trong ASP.NET Core
Input Tag Helper tạo ra phần tử HTML tương ứng với thuộc tính của Model là input.
Đọc thêm