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

Asp.Net webAPI C# में पाइपलाइन में कस्टम संदेश हैंडलर कैसे जोड़ें?

ASP.NET वेब API में एक कस्टम सर्वर-साइड HTTP संदेश हैंडलर बनाने के लिए, हमें एक ऐसा वर्ग बनाने की आवश्यकता है जो System.Net.Http.DelegatingHandler से प्राप्त किया जाना चाहिए। ।

चरण 1 −

एक नियंत्रक और उससे संबंधित क्रिया विधियाँ बनाएँ।

उदाहरण

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class StudentController : ApiController{
      List<Student> students = new List<Student>{
         new Student{
            Id = 1,
            Name = "Mark"
         },
         new Student{
            Id = 2,
            Name = "John"
         }
      };
      public IEnumerable<Student> Get(){
         return students;
      }
      public Student Get(int id){
         var studentForId = students.FirstOrDefault(x => x.Id == id);
         return studentForId;
      }
   }
}

चरण 2 −

अपना खुद का CutomerMessageHandler क्लास बनाएं।

उदाहरण

using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
namespace DemoWebApplication{
   public class CustomMessageHandler : DelegatingHandler{
      protected async override Task<HttpResponseMessage>
      SendAsync(HttpRequestMessage request, CancellationToken cancellationToken){
         var response = new HttpResponseMessage(HttpStatusCode.OK){
            Content = new StringContent("Result through custom message handler..")
         };
         var taskCompletionSource = new
         TaskCompletionSource<HttpResponseMessage>();
         taskCompletionSource.SetResult(response);
         return await taskCompletionSource.Task;
      }
   }
}

हमने DelegatingHandlerand से व्युत्पन्न CustomMessageHandler वर्ग घोषित किया है जिसमें हमने SendAsync() फ़ंक्शन को ओवरराइड किया है।

जब कोई HTTP अनुरोध आता है तो CustomMessageHandler निष्पादित होगा और यह HTTP अनुरोध को आगे संसाधित किए बिना, अपने आप ही एक HTTP संदेश वापस कर देगा। अंतत:हम प्रत्येक HTTP अनुरोध को उसके उच्च स्तर तक पहुंचने से रोक रहे हैं।

चरण 3 -

अब CustomMessageHandler को Global.asax वर्ग में पंजीकृत करें।

public class WebApiApplication : System.Web.HttpApplication{
   protected void Application_Start(){
      GlobalConfiguration.Configure(WebApiConfig.Register);
      GlobalConfiguration.Configuration.MessageHandlers.Add(new
      CustomMessageHandler());
   }
}

चरण 4 -

एप्लिकेशन चलाएं और यूआरएल प्रदान करें।

Asp.Net webAPI C# में पाइपलाइन में कस्टम संदेश हैंडलर कैसे जोड़ें?

उपरोक्त आउटपुट से हम उस संदेश को देख सकते हैं जिसे हमने अपने CustomMessageHandler वर्ग में सेट किया है। तो HTTP संदेश Get() क्रिया तक नहीं पहुंच रहा है और इससे पहले यह हमारे CustomMessageHandler वर्ग में वापस आ रहा है।


  1. C# ASP.NET WebAPI में विभिन्न प्रकार के फ़िल्टर क्या हैं?

    वेबएपी फ्रेमवर्क अनुरोध प्रसंस्करण के विभिन्न स्तरों पर अतिरिक्त तर्क को इंजेक्ट करने के लिए फिल्टर का उपयोग किया जाता है। फ़िल्टर क्रॉस-कटिंग चिंताओं (लॉगिंग, प्राधिकरण और कैशिंग) के लिए एक रास्ता प्रदान करते हैं। एक घोषणात्मक या प्रोग्रामेटिक तरीके से एक क्रिया विधि या नियंत्रक पर फ़िल्टर लागू किए

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

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

  1. सी # एएसपी.नेट वेबएपीआई में किसी क्रिया विधि से कस्टम परिणाम प्रकार कैसे वापस करें?

    हम IHttpActionResult इंटरफ़ेस . को लागू करके परिणाम प्रकार के रूप में अपना स्वयं का कस्टम वर्ग बना सकते हैं . IHttpActionResult में एक ही विधि है, ExecuteAsync, जो अतुल्यकालिक रूप से एक HttpResponseMessage उदाहरण बनाता है। public interface IHttpActionResult {    Task<HttpResponseMessag