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

मिडलवेयर सी # एएसपीनेट कोर में त्रुटियों को कैसे संभालें?

CustomExceptionMiddleware नाम का एक नया फ़ोल्डर और उसके अंदर एक classExceptionMiddleware.cs बनाएँ।

पहली चीज़ जो हमें करने की ज़रूरत है वह है निर्भरता इंजेक्शन के माध्यम से अपनी IloggerManager सेवा और RequestDelegate को पंजीकृत करना।

RequestDeleagate प्रकार का _next पैरामीटर एक फ़ंक्शन प्रतिनिधि है जो हमारे HTTP अनुरोधों को संसाधित कर सकता है।

पंजीकरण प्रक्रिया के बाद, हमें InvokeAsync() विधि बनाने की आवश्यकता है। RequestDelegate इसके बिना अनुरोधों को संसाधित नहीं कर सकता है।

_next प्रतिनिधि को अनुरोध को संसाधित करना चाहिए और हमारे नियंत्रक से प्राप्त कार्रवाई को एक सफल प्रतिक्रिया उत्पन्न करनी चाहिए। लेकिन अगर कोई अनुरोध असफल होता है (और ऐसा इसलिए है, क्योंकि हम अपवाद को मजबूर कर रहे हैं),

हमारा मिडलवेयर कैच ब्लॉक को ट्रिगर करेगा और HandleExceptionAsyncmethod को कॉल करेगा।

public class ExceptionMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILoggerManager _logger;
   public ExceptionMiddleware(RequestDelegate next, ILoggerManager logger){
      _logger = logger;
      _next = next;
   }
   public async Task InvokeAsync(HttpContext httpContext){
      try{
            await _next(httpContext);
      }
      catch (Exception ex){
         _logger.LogError($"Something went wrong: {ex}");
         await HandleExceptionAsync(httpContext, ex);
      }
   }
   private Task HandleExceptionAsync(HttpContext context, Exception exception){
      context.Response.ContentType = "application/json";
      context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
      return context.Response.WriteAsync(new ErrorDetails(){
         StatusCode = context.Response.StatusCode,
         Message = "Internal Server Error from the custom middleware."
      }.ToString());
   }
}

हमारे ExceptionMiddlewareExtensions वर्ग को किसी अन्य स्थिर विधि से संशोधित करें -

public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder
app){
   app.UseMiddleware<ExceptionMiddleware>();
}

स्टार्टअप वर्ग में कॉन्फ़िगर विधि में इस विधि का उपयोग करें -

app.ConfigureCustomExceptionMiddleware();

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

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

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

    एक बार वेब एपीआई सेवा सार्वजनिक हो जाने के बाद, विभिन्न क्लाइंट एप्लिकेशन हमारी वेब एपीआई सेवाओं का उपयोग करना शुरू कर देते हैं। जैसे-जैसे व्यवसाय बढ़ता है और आवश्यकताएं बदलती हैं, हमें सेवाओं को भी बदलना पड़ सकता है, लेकिन सेवाओं में परिवर्तन इस तरह से किया जाना चाहिए कि कोई भी मौजूदा क्लाइंट एप्लि

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

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