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

Asp.Net webAPI C# में DelegatingHandler का उपयोग क्या है?

एक संदेश हैंडलर में, संदेश संचालकों की एक श्रृंखला एक साथ जंजीर में जकड़ी होती है। पहला हैंडलर एक HTTP अनुरोध प्राप्त करता है, कुछ प्रसंस्करण करता है, और अगले हैंडलर को अनुरोध देता है। कुछ बिंदु पर, प्रतिक्रिया बनाई जाती है और श्रृंखला में बैक अप जाती है। इस पैटर्न को प्रतिनिधि हैंडलर . कहा जाता है ।

अंतर्निहित सर्वर-साइड संदेश हैंडलर के साथ, हम अपना सर्वर-साइड HTTP संदेश हैंडलर भी बना सकते हैं। कस्टम सर्वर-साइड HTTPMessage हैंडलर बनाने के लिए ASP.NET वेब API में, हम DelegatingHandler . का उपयोग करते हैं . हमें System.Net.Http.DelegatingHandler . से व्युत्पन्न एक वर्ग बनाना है . तब उस कस्टम वर्ग को SendAsync . को ओवरराइड करना चाहिए विधि।

कार्य SendAsync (HttpRequestMessage अनुरोध, रद्दीकरण टोकन रद्दीकरण टोकन);

विधि इनपुट के रूप में एक HttpRequestMessage लेती है और अतुल्यकालिक रूप से एक HttpResponseMessage लौटाती है। एक सामान्य कार्यान्वयन निम्न कार्य करता है -

  • अनुरोध संदेश संसाधित करें।
  • आधार पर कॉल करें। आंतरिक हैंडलर को अनुरोध भेजने के लिए SendAsync।
  • आंतरिक हैंडलर एक प्रतिक्रिया संदेश देता है। (यह चरण अतुल्यकालिक है।)
  • प्रतिक्रिया को संसाधित करें और उसे कॉलर को लौटा दें।

उदाहरण

public class CustomMessageHandler : DelegatingHandler{
   protected async override Task<HttpResponseMessage> SendAsync(
   HttpRequestMessage request, CancellationToken cancellationToken){
      Debug.WriteLine("CustomMessageHandler processing the request");
      // Calling the inner handler
      var response = await base.SendAsync(request, cancellationToken);
      Debug.WriteLine("CustomMessageHandler processing the response");
      return response;
   }
}

एक प्रतिनिधि हैंडलर भी आंतरिक हैंडलर को छोड़ सकता है और सीधे प्रतिक्रिया बना सकता है।

उदाहरण

public class CustomMessageHandler: DelegatingHandler{
   protected override Task<HttpResponseMessage> SendAsync(
   HttpRequestMessage request, CancellationToken cancellationToken){
      // Create the response
      var response = new HttpResponseMessage(HttpStatusCode.OK){
         Content = new StringContent("Skipping the inner handler")
      };
      // TaskCompletionSource creates a task that does not contain a delegate
      var taskCompletion = new TaskCompletionSource<HttpResponseMessage>();
      taskCompletion.SetResult(response);
      return taskCompletion.Task;
   }
}

  1. C# ASP.NET WebAPI में Querystring पैरामीटर के साथ वर्जनिंग कैसे करें?

    DefaultHttpControllerSelector वेब एपीआई में वर्ग उपयुक्त नियंत्रक क्रिया पद्धति का चयन करने के लिए जिम्मेदार है जिसे हम यूआरआई में भेजते हैं। मान लें कि हमें नीचे की तरह क्वेरी स्ट्रिंग में वर्जनिंग को लागू करना है v=1 StudentsV1Controller (Version 1) v=2 StudentsV2Controller (Version 2) अगर हम क्

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

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

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

    वेब एपीआई क्रिया विधि में निम्नलिखित रिटर्न प्रकार हो सकते हैं। शून्य आदिम प्रकार/जटिल प्रकार HttpResponseMessage IHttpActionResult शून्य - यह आवश्यक नहीं है कि सभी क्रिया विधियों को कुछ वापस करना होगा। इसमें शून्य वापसी प्रकार हो सकता है। उदाहरण using DemoWebApplication.Models using