Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

हम C# ASP.NET WebAPI में हैंडल न किए गए अपवादों को संभालने के लिए एक अपवाद फ़िल्टर कैसे बना सकते हैं?

एक अपवाद फ़िल्टर निष्पादित किया जाता है जब एक नियंत्रक विधि किसी भी अनचाहे अपवाद को फेंकता है जो HttpResponseException अपवाद नहीं है। TheHttpResponseException प्रकार एक विशेष मामला है, क्योंकि इसे विशेष रूप से एक HTTP प्रतिक्रिया देने के लिए डिज़ाइन किया गया है।

अपवाद फ़िल्टर System.Web.Http.Filters.IExceptionFilter इंटरफ़ेस को लागू करते हैं। अपवाद फ़िल्टर लिखने का सबसे सरल तरीका सिस्टम से प्राप्त करना है।

नीचे एक फ़िल्टर है जो NotFiniteNumberException अपवादों को HTTP स्थिति कोड 416, अनुरोधित श्रेणी संतोषजनक नहीं में कनवर्ट करता है ।

अपवादफ़िल्टरएट्रिब्यूट -

उदाहरण

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 का परीक्षण करें।

हम 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 में क्रिया विधि के लिए उपनाम नाम कैसे निर्दिष्ट कर सकते हैं?

    नियंत्रक में सार्वजनिक विधि को क्रिया विधि कहा जाता है। आइए एक उदाहरण पर विचार करें जहां डेमोकंट्रोलर वर्ग एपीकंट्रोलर से लिया गया है और इसमें कई क्रिया विधियां शामिल हैं जिनके नाम HTTP क्रियाओं जैसे गेट, पोस्ट, पुटैंड डिलीट से मेल खाते हैं। उदाहरण public class DemoController : ApiController{  

  1. C# ASP.NET WebAPI में CORS समस्या को कैसे हल करें?

    क्रॉस-ओरिजिनल रिसोर्स शेयरिंग (सीओआरएस) एक ऐसा तंत्र है जो ब्राउज़र को एक मूल पर चलने वाले वेब एप्लिकेशन को एक अलग मूल से चयनित संसाधनों तक पहुंच देने के लिए अतिरिक्त HTTP शीर्षलेखों का उपयोग करता है। एक वेब एप्लिकेशन एक क्रॉस-ओरिजिनल HTTP अनुरोध को तब निष्पादित करता है जब वह ऐसे संसाधन का अनुरोध कर

  1. हम जावा में जेटीबल कैसे फ़िल्टर कर सकते हैं?

    एक JTable टेबल बनाने और प्रदर्शित करने की एक बहुत ही लचीली संभावना प्रदान करता है। टेबल मॉडल इंटरफ़ेस उन वस्तुओं के तरीकों को परिभाषित करता है जो तालिका की सामग्री को निर्दिष्ट करते हैं। सारटेबल मॉडल क्लास को आम तौर पर मॉडल तालिका का कस्टम कार्यान्वयन प्रदान करने के लिए बढ़ाया जाता है। JTable वर्