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

C# ASP.NET WebAPI-তে অনহ্যান্ডেল্ড এক্সসেপশন হ্যান্ডেল করার জন্য এক্সসেপশন ফিল্টার কীভাবে তৈরি করবেন?

এক্সসেপশন ফিল্টার তখন এক্সিকিউট होता है যখন একটি কন্ট্রোলার মেথড কোনো অনহ্যান্ডেল্ড এক্সসেপশন থ্রো করে যা HttpResponseException নয়। HttpResponseException টাইপ একটি বিশেষ কেস, কারণ এটি ספেসিফিক্যালি HTTP রেসপন্স রিটার্ন করার জন্য ডিজাইন করা হয়েছে।

এক্সসেপশন ফিল্টার System.Web.Http.Filters.IExceptionFilter ইন্টারফেস ইমপ্লিমেন্ট করে। এক্সসেপশন ফিল্টার লিখার সবচেয়ে সহজ উপায় হলো System.Web.Http.Filters.ExceptionFilterAttribute ক্লাস থেকে ডেরাইভ করা এবং OnException মেথড ওভাররাইড করা।

নিচে একটি ফিল্টার দেওয়া হলো যা NotFiniteNumberException এক্সসেপশনগুলিকে HTTP স্ট্যাটাস কোড 416 (Requested Range Not Satisfiable)-এ কনভার্ট করে।

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

using System;
using System.Net;
using System.Net.Http;
using System.Web.Http.Filters;

namespace DemoWebApplication.Controllers
{
    public class ExceptionAttribute : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext context)
        {
            if (context.Exception is NotFiniteNumberException)
            {
                context.Response = new HttpResponseMessage(HttpStatusCode.RequestedRangeNotSatisfiable);
            }
        }
    }
}

কন্ট্রোলার একশন মেথড

using DemoWebApplication.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace DemoWebApplication.Controllers
{
    [Exception]
    public class StudentController : ApiController
    {
        List students = new List
        {
            new Student { Id = 1, Name = "Mark" },
            new Student { Id = 2, Name = "John" }
        };

        public Student Get(int id)
        {
            if (id <= 0)
            {
                throw new NotFiniteNumberException("The Id is not valid");
            }
            var studentForId = students.FirstOrDefault(x => x.Id == id);
            return studentForId;
        }
    }
}

এখন কন্ট্রোলার একশন মেথডের জন্য id = 0 পাস করে উপরের ExceptionAttribute টেস্ট করুন।

C# ASP.NET WebAPI-তে অনহ্যান্ডেল্ড এক্সসেপশন হ্যান্ডেল করার জন্য এক্সসেপশন ফিল্টার কীভাবে তৈরি করবেন?

ExceptionAttribute নিচের যেকোনো একটি পদ্ধতিতে রেজিস্টার করা যেতে পারে:

১. একশন মেথডে এক্সসেপশন ফিল্টার ডেকোরেট করা

[Exception]
public IHttpActionResult Get(int id)
{
    return Ok();
}

২. কন্ট্রোলার লেভেলে এক্সসেপশন ফিল্টার ডেকোরেট করা

[Exception]
public class StudentController : ApiController
{
    public IHttpActionResult Get(int id)
    {
        return Ok();
    }
}

৩. গ্লোবালি WebApiConfig.cs-এ রেজিস্টার করা

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new ExceptionAttribute());
    }
}
  1. C# ASP.NET WebAPI-তে অনহ্যান্ডেল্ড এক্সসেপশন হ্যান্ডেল করার জন্য এক্সসেপশন ফিল্টার কীভাবে তৈরি করবেন?

  2. C# ASP.NET WebAPI-তে একশন মেথডের জন্য আলিয়াস নাম কীভাবে দিবেন?

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

  4. জাভাতে JTable ফিল্টার করুন