একটি ব্যতিক্রম ফিল্টার কার্যকর করা হয় যখন একটি কন্ট্রোলার পদ্ধতি এমন কোনো unhandleddexception নিক্ষেপ করে যা HttpResponseException ব্যতিক্রম নয়। TheHttpResponseException প্রকার একটি বিশেষ ক্ষেত্রে, কারণ এটি বিশেষভাবে একটি HTTP প্রতিক্রিয়া ফেরত দেওয়ার জন্য ডিজাইন করা হয়েছে৷
ব্যতিক্রম ফিল্টারগুলি System.Web.Http.Filters.IExceptionFilter ইন্টারফেস প্রয়োগ করে৷ একটি ব্যতিক্রম ফিল্টার লেখার সহজ উপায় হল theSystem.Web.Http.Filters.ExceptionFilterAttribute ক্লাস থেকে নেওয়া এবং TheOnException পদ্ধতিকে ওভাররাইড করা৷
নীচে একটি ফিল্টার রয়েছে যা NotFiniteNumberException ব্যতিক্রমগুলিকে HTTP স্থিতি কোডে রূপান্তরিত করে 416, অনুরোধকৃত পরিসর সন্তুষ্ট নয় .
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<Student> students = new List<Student>{ 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 পরীক্ষা করি।
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()); } }