为此,你需要一个错误控制器
在你的
ErrorController.cs
文件
public class ErrorController : Controller
{
private readonly ILogger<ErrorController> logger;
public ErrorController(ILogger<ErrorController> logger)
{
this.logger = logger;
}
[Route("Error/{statusCode}")]
public IActionResult HttpStatusCodeHandler(int statusCode)
{
var viewToReturn = string.empty;
var statusCodeResult = HttpContext.Features.Get<IStatusCodeReExecuteFeature>();
switch (statusCode)
{
case 404:
ViewBag.ErrorMessage = "Sorry the resource you requested could not be found";
logger.LogWarning($"404 Error Occured. Path = {statusCodeResult.OriginalPath}" + $"and QueryString = {statusCodeResult.OriginalQueryString}");
viewToReturn = nameof(Notfound);
break;
}
return View(viewToReturn ?? "defaultUnInterceptedErrorView");
}
[Route("Error")]
[AllowAnonymous]
public IActionResult Error()
{
var exceptionDetails = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
logger.LogError($"The Path {exceptionDetails.Path} threw an exception" + $"{exceptionDetails.Error}");
return View("Error");
}
}
在你的创业公司。cs文件
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseStatusCodePagesWithReExecute("/Error/{0}");
}
你也可以选择
NotFound.cshtml
视图,您可以从中了解
ViewBag.ErrorMessage
(注意:ASP.NET Core始终在中搜索Notfound操作。)
AccountController.cs
但你可以在创业时改变这一点。(政务司司长)
然后,您还可以继续case switch语句,以适应您计划拦截的所有状态代码错误