app.UseErrorHandler() 可以访问错误详细信息吗? [英] Can app.UseErrorHandler() access error details?
问题描述
在我的 MVC4 应用程序中,我有一个 global.asax.cs 覆盖 Application_Error(object sender, EventArgs e)
在那里我可以提取 exception
, statusCode
和 requestedUrl
(用于处理 404).这将被发送到我的控制器,并且 404s 与 5xx 的错误页面会有所不同(这些会获得堆栈跟踪).我看不到如何使用 UseErrorHandler()
为我的错误操作获取相同的信息.我在 ASP.NET Core 中使用了正确的方法吗?
In my MVC4 app I had a global.asax.cs override of Application_Error(object sender, EventArgs e)
where I could extract the exception
, statusCode
and requestedUrl
(for handling 404). That would get sent to my controller and the error page would be different for 404s vs 5xx (these get a stack trace). I don't see how to get this same info to my Error action using UseErrorHandler()
. Am I using the right approach in ASP.NET Core?
推荐答案
8月2016 年 2 月 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",
...
}
...
这篇关于app.UseErrorHandler() 可以访问错误详细信息吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!