एक बेहतर तरीका अब तक इस संभाल करने के लिए (1.1) में यह करने के लिए है Startup.cs
की Configure()
:
app.UseExceptionHandler("/Error");
इसके लिए मार्ग निष्पादित करेगा /Error
। यह आपको आपके द्वारा लिखी गई प्रत्येक क्रिया में ट्राइ-कैच ब्लॉक जोड़ने से बचाएगा।
बेशक, आपको इसके समान एक ErrorController जोड़ने की आवश्यकता होगी:
[Route("[controller]")]
public class ErrorController : Controller
{
[Route("")]
[AllowAnonymous]
public IActionResult Get()
{
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
अधिक जानकारी यहाँ ।
यदि आप वास्तविक अपवाद डेटा प्राप्त करना चाहते हैं, तो आप कथन के Get()
ठीक पहले इसे ऊपर जोड़ सकते हैं return
।
// Get the details of the exception that occurred
var exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
if (exceptionFeature != null)
{
// Get which route the exception occurred at
string routeWhereExceptionOccurred = exceptionFeature.Path;
// Get the exception that occurred
Exception exceptionThatOccurred = exceptionFeature.Error;
// TODO: Do something with the exception
// Log it with Serilog?
// Send an e-mail, text, fax, or carrier pidgeon? Maybe all of the above?
// Whatever you do, be careful to catch any exceptions, otherwise you'll end up with a blank page and throwing a 500
}
स्कॉट Sauber के ब्लॉग से लिया गया स्निपेट ऊपर ।