কম্পিউটার টিউটোরিয়াল

C# ASP.NET Core-এ মিডলওয়ারে এরর হ্যান্ডলিং (Custom Exception Middleware)

CustomExceptionMiddleware ফোল্ডার তৈরি করুন এবং ExceptionMiddleware.cs ক্লাস যোগ করুন।

প্রথমে ILoggerManager সার্ভিস এবং RequestDelegate ডিপেন্ডেন্সি ইনজেকশন দিয়ে রেজিস্টার করুন। _next প্যারামিটার (RequestDelegate টাইপ) একটি ফাংশন ডেলিগেট যা HTTP রিকোয়েস্ট প্রসেস করে।

রেজিস্ট্রেশনের পর InvokeAsync() মেথড তৈরি করুন। RequestDelegate এর بدون এটি রিকোয়েস্ট প্রসেস করতে পারে না।

_next ডেলিগেট রিকোয়েস্ট প্রসেস করবে এবং কন্ট্রোলারের Get অ্যাকশন সফল রেসপন্স জেনারেট করবে। কিন্তু যদি রিকোয়েস্ট असফল হয় (এখানে আমরা এক্সেপশন ফোর্স করছি), তবে মিডলওয়্যার ক্যাচ ব্লক ট্রিগার করবে এবং HandleExceptionAsync মেথড কল করবে।

ইমপ্লিমেন্টেশন

public class ExceptionMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILoggerManager _logger;
    public ExceptionMiddleware(RequestDelegate next, ILoggerManager logger)
    {
        _logger = logger;
        _next = next;
    }
    public async Task InvokeAsync(HttpContext httpContext)
    {
        try
        {
            await _next(httpContext);
        }
        catch (Exception ex)
        {
            _logger.LogError($"Something went wrong: {ex}");
            await HandleExceptionAsync(httpContext, ex);
        }
    }
    private Task HandleExceptionAsync(HttpContext context, Exception exception)
    {
        context.Response.ContentType = "application/json";
        context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
        return context.Response.WriteAsync(new ErrorDetails()
        {
            StatusCode = context.Response.StatusCode,
            Message = "Internal Server Error from the custom middleware."
        }.ToString());
    }
}

এক্সটেনশন মেথড

public static class ExceptionMiddlewareExtensions
{
    public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder app)
    {
        app.UseMiddleware<ExceptionMiddleware>();
    }
}

Startup.cs-এ ব্যবহার

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.ConfigureCustomExceptionMiddleware();
    // অন্যান্য মিডলওয়্যার...
}

নোট: ASP.NET Core 3.0+ এ বিল্ট-ইন UseExceptionHandler এবং UseDeveloperExceptionPage মিডলওয়্যারও আছে। কাস্টম মিডলওয়্যার তৈরি করলে ফুল কন্ট্রোল পাওয়া যায় (লগিং, কাস্টম রেসপন্স ফরম্যাট, ইত্যাদি)।

  1. C# ASP.NET WebAPI-তে Accept Header দিয়ে ভার্সনিং কীভাবে করবেন?

  2. C# ASP.NET WebAPI-তে কোয়েরি স্ট্রিং প্যারামিটার দিয়ে ভার্সনিং কীভাবে করবেন?

  3. C# ASP.NET WebAPI-তে URI দিয়ে Web API ভার্সনিং কীভাবে করবেন?

  4. C# ASP.NET WebAPI-তে CORS সমস্যা সমাধান কীভাবে করবেন?