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

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 को निम्नलिखित दृष्टिकोणों में से किसी एक द्वारा पंजीकृत किया जा सकता है।

1. एक्शन को एक्सेप्शन फिल्टर से सजाएं

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

2. कंट्रोलर को एक्सेप्शन फिल्टर से सजाएं

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

3. WebApiConfig.cs में वैश्विक स्तर पर एक्सेप्शन पंजीकृत करें

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Filters.Add(new ExceptionAttribute());
    }
}
  1. C# ASP.NET WebAPI में एक्शन मेथड के लिए उपनाम (Alias) नाम कैसे असाइन करें? C# ASP.NET WebAPI में एक्शन मेथड के लिए उपनाम (Alias) नाम कैसे असाइन करें?

    कंट्रोलर में एक पब्लिक मेथड को एक्शन मेथड कहा जाता है। आइए एक उदाहरण पर विचार करें जहां DemoController क्लास ApiController से डेराइव्ड है और इसमें कई एक्शन मेथड्स हैं जिनके नाम HTTP वर्ब्स जैसे Get, Post, Put और Delete से मेल खाते हैं। उदाहरण public class DemoController : ApiController { public

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

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

  1. Java में JTable को कैसे फ़िल्टर करें? Java में JTable को कैसे फ़िल्टर करें?

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