HomeController.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.AspNetCore.Diagnostics;
  3. using Kitty_Fall.Cms.Helpers;
  4. using Kitty_Fall.Cms.Models;
  5. using System.Diagnostics;
  6. namespace Kitty_Fall.Cms.Controllers;
  7. public class HomeController : Controller
  8. {
  9. private readonly ILogger<HomeController> _logger;
  10. public HomeController(ILogger<HomeController> logger)
  11. {
  12. _logger = logger;
  13. }
  14. [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
  15. [HttpGet("/Home/Error")]
  16. public IActionResult Error()
  17. {
  18. var requestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
  19. var exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
  20. if (exceptionFeature?.Error != null)
  21. {
  22. _logger.LogError(
  23. exceptionFeature.Error,
  24. "Unhandled CMS exception. RequestId: {RequestId}; Path: {Path}",
  25. requestId,
  26. exceptionFeature.Path);
  27. }
  28. var cmsSession = CmsSecurityHelper.GetSession(HttpContext);
  29. var isAdmin = string.Equals(cmsSession?.RoleCode, "ADMIN", StringComparison.OrdinalIgnoreCase);
  30. return View(new ErrorViewModel
  31. {
  32. RequestId = requestId,
  33. ErrorMessage = isAdmin ? exceptionFeature?.Error.GetBaseException().Message : null
  34. });
  35. }
  36. }