عیبیابی خطاهای استارتآپ ASP.NET Core در لینوکس
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۴/۰۶ ۰۸:۰۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
systemd را ریاستارت میکنید و با هیجان آدرس سایت را در مرورگر وارد میکنید... اما سایت بالا نمیآید!sudo systemctl status my-site.service● my-site.service - My Site
Loaded: loaded (/etc/systemd/system/my-site.service; enabled; preset: enabled)
Active: activating (auto-restart) (Result: signal) since Tue 2025-06-24 13:30:00 EDT; 2s ago
Process: 96890 ExecStart=/usr/bin/dotnet /path/site.dll (code=killed, signal=ABRT)
Main PID: 96890 (code=killed, signal=ABRT)Active: activating (auto-restart): این یعنی systemd (مدیر سرویسهای ما) مثل یک همکار دلسوز، تلاش میکند سرویس شما را اجرا کند، اما سرویس بلافاصله پس از اجرا "میمیرد". systemd دوباره تلاش میکند و این چرخه مدام تکرار میشود.code=killed, signal=ABRT: این سرنخ اصلی ماست! ABRT مخفف Abort (توقف ناگهانی) است. این یک خروج عادی نیست. این یعنی اپلیکیشن شما در همان لحظات اولیه اجرا، با یک خطای مرگبار و غیرقابلتحمل مواجه شده و خودش را متوقف کرده است. این خطا از داخل خود اپلیکیشن .NET نشأت گرفته است.journalctlsystemd یک دفترچه خاطرات بسیار دقیق به نام Journal دارد که تمام وقایع مربوط به سرویسها را ثبت میکند. ما برای خواندن این دفترچه از دستور journalctl استفاده میکنیم. مشکل اینجاست که اگر فقط دستور زیر را اجرا کنید:sudo journalctl -u my-site.servicejournalctljournalctl آشنا شویم:-f یا --follow به journalctl میگوید که لاگها را به صورت زنده و در لحظه نمایش بده.sudo journalctl -u my-site.service -fsudo systemctl restart my-site.service# فقط لاگهای امروز را نشان بده sudo journalctl -u my-site.service --since today # فقط لاگهای ۱۰ دقیقه اخیر را نشان بده sudo journalctl -u my-site.service --since "10 minutes ago" # فقط لاگهای مربوط به بعد از یک تاریخ و زمان مشخص sudo journalctl -u my-site.service --since "2025-06-24 13:00:00"
-n و -e)-n یا --lines: به شما اجازه میدهد فقط تعداد مشخصی از آخرین خطوط لاگ را ببینید. این برای گرفتن یک نمای کلی از آخرین اتفاقات عالی است.sudo journalctl -u my-site.service -n 50 (۵۰ خط آخر را نشان میدهد)-e یا --pager-end: این دستور بلافاصله شما را به انتهای لاگها میبرد، جایی که جدیدترین خطاها ثبت شدهاند.sudo journalctl -u my-site.service -esudo journalctl -u my-site.service -n 100 -f--since today) لاگها را بررسی میکنیم و به احتمال زیاد با پیامی شبیه به این مواجه میشویم:It was not possible to find any compatible framework version The framework 'Microsoft.AspNetCore.App', version '8.0.6' was not found. - No frameworks were found in the [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] directory. You can resolve the issue by installing the specified framework version or changing the specified version in the application's config file. Learn more at https://aka.ms/dotnet/ tìm-runtime
8.0.6) را هم نصب کنیم یا اپلیکیشن را برای کار با نسخه جدید، دوباره پابلیش نکردهایم.