کنترل خطاهای 401 ، 500 و 404 در Asp.net core
سلام
من میخوام توی پروژه خودم با Net Core 3 خطاهای 401 و 500 و 404 و سایر خطاهایی که از سمت کاربر یا سرور ممکنه به وجود بیاد رو کنترل کنم.
البته من میخوام این کار رو در Api انجام بدم به این صورت که که وقتی Api از سمت موبایل صدا زده شد اگر خطایی به وجود اومد صفحه مدیریت شده خطا رو برگردونم و اگر خطایی نبود همون صفحه مورد نظر وب رو نمایش بدم. چجوری میتونم خطاهام رو در Api مدیریت کنم؟
پاسخ هوش مصنوعی
برای مدیریت خطاها در ASP.NET Core API، می توانید از middleware استفاده کنید. در کد زیر، نحوه کنترل خطاهای 401، 404 و 500 را مشاهده می کنید. این کد را می توانید در فایل Startup.cs
خود قرار دهید:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/api/error"); // مسیر صفحه خطا
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 401)
{
// مدیریت خطای 401
context.Response.Redirect("/api/error/unauthorized");
}
else if (context.Response.StatusCode == 404)
{
// مدیریت خطای 404
context.Response.Redirect("/api/error/notfound");
}
else if (context.Response.StatusCode == 500)
{
// مدیریت خطای 500
context.Response.Redirect("/api/error/internalservererror");
}
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
سپس می توانید کنترلر مخصوص خطاها را تعریف کنید:
[ApiController]
[Route("api/error")]
public class ErrorController : ControllerBase
{
[HttpGet("unauthorized")]
public IActionResult Unauthorized()
{
return StatusCode(401, new { message = "دسترسی غیرمجاز است." });
}
[HttpGet("notfound")]
public IActionResult NotFound()
{
return StatusCode(404, new { message = "صفحه پیدا نشد." });
}
[HttpGet("internalservererror")]
public IActionResult InternalServerError()
{
return StatusCode(500, new { message = "خطای داخلی سرور." });
}
}
با استفاده از این کد، می توانید خطاهای مختلف را کنترل کرده و پاسخ های مناسبی به کلاینت ارسال کنید.
با سلام
برای کنترل خطا توی Asp.net core میتونید توی فایل startup.cs و در متد Configure کدهای زیر رو بنویسید.
برای کنترل خطای 404
app.Use(async (context, next) =>
{
await next();
if (context.Response.StatusCode == 404)
{
context.Request.Path = "/home/err404";
await next();
}
});
و برای کنترل سایر خطاها هم
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
مجددا تاکید میکنم هر ذو قطعه کد در مت د configure باشه.
بعد از این برای هر کدوم یک ویو به نام 404 و Error در کنترلر Home بسازید.
در مورد خطای 404 به صورت اتوماتیک منتقل میشه به این صفحه اما در مورد خطاها میتونید در بلوک های Try و Catch و در بلوک Catch کاربر رو منتقل کنید به کنترلر Home و اکشن Error
موفق باشید
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2