我想當例外拋出例外錯誤時在記錄器中顯示
這是我的控制器我在這個控制器中添加記錄器我只在我訪問頁面時添加訪問頁面,該頁面將在記錄器中顯示該頁面被訪問
public class CascadingController : Controller
{
private readonly newnewContext _context;
private readonly ILogger<CascadingController> _logger;
public CascadingController(newnewContext context, ILogger<CascadingController> logger)
{
_context = context;
_logger = logger;
}
// GET: /<controller>/
public IActionResult Index()
{
throw new Exception("testing");
_logger.LogInformation("Index page visited.");
return View();
}
public JsonResult Country()
{
_logger.LogInformation("Country Dropdown visited.");
var cnt = _context.Country.ToList();
return new JsonResult(cnt);
}
public JsonResult State(int id)
{
_logger.LogInformation("State Dropdown visited.");
var st = _context.State.Where(e => e.Country.CountryId == id).ToList();
return new JsonResult(st);
}
public JsonResult District(int id)
{
_logger.LogInformation("District Dropdown visited.");
var dt = _context.District.Where(e => e.State.StateId == id).ToList();
return new JsonResult(dt);
}
public IActionResult Error()
{
return View();
}
public IActionResult Dropdown()
{
return View();
}
uj5u.com熱心網友回復:
你可以創建一個ErrorController來處理例外,參考這個簡單的Demo:
public IActionResult Index()
{
//log if visit this page
_logger.LogInformation("Index page visited");
throw new Exception("This is an Exception");
return View();
}
在Program.cs(.Net 6)中,配置 ExceptionHandler
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
else
{
//configure here
app.UseExceptionHandler("/Error");
}
錯誤控制器
public class ErrorController : Controller
{
private readonly ILogger<ErrorController> _logger;
private readonly IHttpContextAccessor _context;
public ErrorController(ILogger<ErrorController> logger, IHttpContextAccessor context)
{
_logger = logger;
_context = context;
}
[Route("Error")]
[AllowAnonymous]
public IActionResult Error()
{
var exceptionDetails = _context.HttpContext.Features.Get<IExceptionHandlerPathFeature>();
//Here you can save this log in db, I just show it in console
_logger.LogError($"The Path {exceptionDetails.Path} throw an exception, THe error is {exceptionDetails.Error}");
return View("Error");
}
}
當訪問此頁面時,它會記錄Index page visted

拋出例外后,它將捕獲錯誤然后記錄它。

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/492103.html
標籤:网 asp.net-mvc asp.net 核心 asp.net-core-mvc
下一篇:ASP.NET應用程式啟動
