在我的MVC4应用程序中,我有一个global.asax.cs覆盖Application_Error(对象发送者,EventArgs e),我可以在其中提取异常,statusCode和requestedUrl(用于处理404).这将被发送到我的控制器,错误页面将是不同的404s与5xx(这些获得堆栈跟踪).我没有看到如何使用UseErrorHandler()将相同的信息添加到我的错误操作中.我在ASP.NET Core中使用正确的方法吗?
解决方法
2016年8月2日 – 1.0.0的更新
Startup.cs
using Microsoft.AspNet.Builder; namespace NS { public class Startup { ... public virtual void Configure(IApplicationBuilder app) { ... app.UseExceptionHandler("/Home/Error"); ... } } }
HomeController.cs
using Microsoft.AspNet.Diagnostics; using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Mvc; using Microsoft.Extensions.Logging; namespace NS.Controllers { public class HomeController : Controller { static ILogger _logger; public HomeController(ILoggerFactory factory) { if (_logger == null) _logger = factory.Create("Unhandled Error"); } public IActionResult Error() { var feature = HttpContext.Features.Get<IExceptionHandlerFeature>(); var error = feature?.Error; _logger.LogError("Oops!",error); return View("~/Views/Shared/Error.cshtml",error); } } }
project.json
... "dependencies": { "Microsoft.AspNet.Diagnostics": "1.0.0",... } ...