با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش asp.net core در خدمت شما دوستان هستیم . در قسمت قبل از این آموزش در مورد متغییر های محیطی و کاربرد آنها صحبت کردیم در این جلسه به کار با استثناها در ASP.NET Core یا Exception ها در asp می پردازیم تا پایان این جلسه با ما همراه باشید.
مدیریت استثنا یکی از مهمترین ویژگی های هر برنامه می باشد. خوشبختانه، ASP.NET Core شامل یک میان افزار است که باعث می شود این امر به آسانی امکان پذیر شود.
به طور پیش فرض، ASP.NET Core یک شماره کد وضعیت ساده را برای هر استثنائی که در یک برنامه رخ می دهد، باز می گرداند.
کدهای زیر باعث می شوند ، صفحه خطای مدیریت نشده ، با ظاهری زشت، در هنگام اجراء برنامه ،نمایش داده شود:
1 2 3 4 5 6 7 | public class Startup { public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.Run(context => { throw new Exception("error"); }); } } |
خروجی به صورت زیر خواهد بود.
برای رسیدگی به استثنا و نمایش پیام های کاربر پسند، باید Package Microsoft.AspNetCore.Diagnostics را از مرجع NuGet دریافت کنیم و این میان افزار را در متد Configure اضافه کنیم. اگر از ویژوال استودیو برای ایجاد برنامه ASP.NET Core استفاده می کنید، این بسته ممکن است قبلا نصب شده باشد. اگر نه، شما می توانید بسته Microsoft.AspNetCore.Diagnostics را از طریق مدیریت NuGet اضافه کنید.
بسته Microsoft.AspNetCore.Diagnostics شامل متد های زیر است که برای رسیدگی به استثناها در سناریو های مختلف استفاده می شوند:
متد ExtensionDeveloperExceptionPage میان افزاری را به درخواست اضافه می کند که صفحه نمایش استثنایی دوستانه را نمایش می دهد. این متد به توسعه دهندگان کمک می کند تا خطاهای که در مرحله توسعه رخ می دهد، را ردیابی و مدیریت کنند.
بدلیل این که این میان افزار اطلاعات حساس را نمایش می دهد، بهتر است آن را فقط در محیط توسعه اضافه کنید تا قبل از اجرای برنامه از خطاهای آن باخبر شوید.
1 2 3 4 5 6 7 8 9 10 11 12 | public class Startup { public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment() || env.IsStaging()) { app.UseDeveloperExceptionPage(); } app.Run(context => { throw new Exception("error"); }); } } |
نتیجه بصورت زیر برگشت داده می شود:
همانطور که می بینید، صفحه استثناء توسعه دهنده شامل ۴ زبانه است: پشته، پرس و جو، کوکی ها و سربرگ. برگه پشته اطلاعات ردیابی پشته را نشان می دهد که نشان می دهد دقیقا چگونه یک خطا رخ داده است. برگه پرس و جو اطلاعات مربوط به رشته پرس و جو را نشان می دهد. برگه کوکی ها اطلاعات مربوط به کوکی های تعیین شده توسط درخواست را نشان می دهد و تب سرصفحه اطلاعات مربوط به هدر ها را نمایش می دهد.
در برنامه MVC Core، ممکن است از برخی کنترلرها برای رسیدگی به همه استثنا ها و نمایش پیام های خطای کاربر پسند استفاده کنیم. متد ExtensionExceptionHandler اجازه می دهد تا ما مسیر ارجاء را در صورت بروز خطا ،پیکربندی کنیم. این روش زمانی مفید است که یک برنامه در زمان اجراء به خطا برخورد کند .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment() || env.IsStaging()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } //code removed for clarity } |
در مثال بالا، کد UseExceptionHandler (“/ Home / Error”) مسیر خطا را انجام می دهد. اگر یک خطا در برنامه MVC اتفاق بیوفتد ، آن صفحه را به اکشن “home / error ” هدایت می کند ، همانطور که در زیر نشان داده شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class HomeController : Controller { public HomeController() { } public IActionResult Error() { return View(); } // other code removed for the clarity } |
فایل HTML مربوط به اکشن Error بشکل زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @{ ViewData["Title"] = "Error"; } <h1 class="text-danger">Error.</h1> <h2 class="text-danger">An error occurred while processing your request.</h2> <h3>Development Mode</h3> <p> Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred. </p> <p> <strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>, and restarting the application. </p> |
و اگر خطایی در زمان اجراء رخ دهد صفحه زیر نمایان خواهد شد:
در قسمت بعد در رابطه با فایل های استاتیک و نحوه اضافه کردن و استفاده از آنها در ASP.NET Core را توضیح می دهیم.