কম্পিউটার

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() ফাংশন ওভাররাইড করেছি।

যখন একটি এইচটিটিপি অনুরোধ আসে তখন CustomMessageHandler এক্সিকিউট করবে এবং এটি HTTP অনুরোধটি আরও প্রক্রিয়া না করে নিজেই একটি HTTP বার্তা ফিরিয়ে দেবে। শেষ পর্যন্ত আমরা প্রতিটি HTTP অনুরোধকে তার উচ্চস্তরে পৌঁছাতে বাধা দিচ্ছি।

ধাপ 3 -

এখন Global.asax ক্লাসে CustomMessageHandler নিবন্ধন করুন।

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

ধাপ 4 -

অ্যাপ্লিকেশনটি চালান এবং Url প্রদান করুন৷

Asp.Net webAPI C# এ পাইপলাইনে কাস্টম বার্তা হ্যান্ডলারগুলি কীভাবে যুক্ত করবেন?

উপরের আউটপুট থেকে আমরা আমাদের কাস্টমমেসেজহ্যান্ডলার ক্লাসে সেট করা বার্তাটি দেখতে পাচ্ছি। তাই HTTP বার্তাটি Get() অ্যাকশনে পৌঁছাচ্ছে না এবং তার আগে এটি আমাদের CustomMessageHandler ক্লাসে ফিরে আসছে।


  1. কিভাবে আমরা C# ASP.NET WebAPI তে অ্যাকশন পদ্ধতির জন্য উপনামের নাম নির্ধারণ করতে পারি?

  2. C# ASP.NET WebAPI-তে বিভিন্ন ধরনের ফিল্টার কী কী?

  3. কিভাবে C# ASP.NET WebAPI এ CORS সমস্যা সমাধান করবেন?

  4. C# ASP.NET WebAPI-তে একটি অ্যাকশন পদ্ধতি থেকে কাস্টম ফলাফলের ধরন কীভাবে ফেরত দেওয়া যায়?