کنترل خطا در ASP.NET Core ؛ یکی از مهمترین امکانات هر برنامه ای است. خوشبختانه، ASP.NET Core میان افزاری را شامل می شود که کار کنترل خطا را ساده تر کرده است. در این بخش، با هم به سراغ کنترل خطا در برنامه  ASP.NET Core می رویم.

به طور پیش فرض، ASP.NET Core برای هر خطایی که در برنامه رخ می دهد یک کد وضعیت ساده برمی گرداند. مثال زیر از متد Configure را در نظر بگیرید که باعث خطا می شود.

در ادامه به بررسی وضعیت خطاها و کنترل آنها میپردازیم در ادامه همراه من باشید.

 

 

کنترل خطا در ASP.NET Core

public class Startup
{
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {            
        app.Run(context => { throw new Exception("error"); });
    }
}

کد بالا نتیجه زیر را نمایش خواهد داد.

کنترل خطا

نصب پکیج Microsoft.AspNetCore.Diagnostics:

برای کنترل خطا و نمایش پیغام های کاربرپسند، لازم است که ما Microsoft.AspNetCore.Diagnostics NuGet package را نصب کرده و میان افزار را در متد Configure() اضافه کنیم. اگر از الگوهای (template) ویژوال استودیو برای ایجاد برنامه ASP.NET Core استفاده می کنید بنابراین این پکیج در حال حاضر نصب شده است. در غیر این صورت می توانید پکیج Microsoft.AspNetCore.Diagnostics را از طریق NuGet Manager نصب نمایید.

پکیج Microsoft.AspNetCore.Diagnostics شامل متدهای افزونه زیر است تا خطاها را در سناریوهای مختلف مدیریت کند:

  1. UseDeveloperExceptionPage
  2. UseExceptionHandler

متد UseDeveloperExceptionPage

متد افزونه UseDeveloperExceptionPage این میان افزار را به کانال درخواست اضافه می کند که صفحه جزئیات خطای متناسب با سلیقه برنامه نویس را نمایش می دهد. این به برنامه نویسان کمک می کند تا خطاهایی که در طول مرحله توسعه برنامه رخ می دهد ردیابی کنند.

از آنجایی که این میان افزار اطلاعات حساس را نمایش می دهد، توصیه می شود که آن را فقط در محیط توسعه اضافه کنید.

public class Startup
{
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment() || env.IsStaging())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(context => { throw new Exception("error"); });
    }
}

کد بالا نتیجه زیر را نمایش می دهد.

کنترل خطا

همانطور که در صفحه ی بالا مشاهده می کنید، خطای برنامه نویس شامل ۴ تب است: Stack، Query، Cookies و Headers. تب Stack اطلاعات stack trace را نشان می دهد که مشخص می کند خطا دقیقا کجا رخ داده است. تب Query اطلاعات مربوط به query string را نشان می دهد. تب Cookies اطلاعات مربوط به تنظیم کوکی توسط درخواست را نمایش می دهد و تب Headers اطلاعات header ها را نشان می هد.

متد UseExceptionHandler

در اپلیکیشن MVC Core، ممکن است بخواهیم که یک سری کنترلر دیگر همه خطاها را کنترل کرده و پیغام های خطای کاربرپسند سفارشی نمایش دهد. متد افزونه UseExceptionHandler به ما امکان پیکربندی مسیر (route) کنترل خطای سفارشی را می دهد. زمانی که اپلیکیشن تحت محیط تولید (production) اجرا می شود (در بخش قبل درباره متغیرهای محیطی صحبت کردیم) این می تواند مفید باشد.

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 هدایت خواهد کرد که اکشن متد Error مربوط به HomeController را اجرا می کند.

مانند کد زیر یک اکشن متد Error در کلاس HomeController ایجاد می کنیم.

public class HomeController : Controller
{
    public HomeController()
    {
    }

    public IActionResult Error()
    {
        return View();
    } 

    // other code removed for the clarity

}

کد زیر محتوای Error.cshtml را نشان می دهد.

@{
    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>
    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
    <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.

حالا، زمانی که یک خطا رخ دهد، صفحه زیر را نمایش می دهد.

کنترل خطا

به این ترتیب، ما می توانیم برای کنترل خطا در برنامه ASP.NET Core میان افزاری پیکربندی کنیم.

نکته: زمانی که شما پروژه ASP.NET Core را با الگوی MVC ایجاد می کنید، ویژوال استودیو به صورت خودکار فایل Error.cshtml را زیر فولدر Home می سازد.

فاطمه زکایی

فاطمه زکایی هستم. فارغ التحصیل کارشناسی مهندسی نرم افزار، مدت سه سال هست که در زمینه توسعه اپلیکیشن های تحت وب و اندروید و همچنین تولید محتوای تخصصی برنامه نویسی تحت وب و اندروید در مجموعه mspsoft در خدمت شما هستم.

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.