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 -
एप्लिकेशन चलाएं और यूआरएल प्रदान करें।
उपरोक्त आउटपुट से हम उस संदेश को देख सकते हैं जिसे हमने अपने CustomMessageHandler वर्ग में सेट किया है। तो HTTP संदेश Get() क्रिया तक नहीं पहुंच रहा है और इससे पहले यह हमारे CustomMessageHandler वर्ग में वापस आ रहा है।