Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net MVC核心中的全局异常处理和日志记录_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# asp.net MVC核心中的全局异常处理和日志记录

C# asp.net MVC核心中的全局异常处理和日志记录,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,我是asp.net核心mvc的新手。我需要在palce上写全局异常处理和错误登录。我不需要在每个控制器中都写下面的内容。请帮助我在一个地方全局写 这是我的密码 使用Microsoft.AspNet.Diagnostics using Microsoft.AspNet.Http.Features; using Microsoft.AspNet.Mvc; using Microsoft.Extensions.Logging; namespace NS.Controllers { publi

我是asp.net核心mvc的新手。我需要在palce上写全局异常处理和错误登录。我不需要在每个控制器中都写下面的内容。请帮助我在一个地方全局写

这是我的密码

使用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);
        }
    }
}
使用Microsoft.AspNet.Http.Features;
使用Microsoft.AspNet.Mvc;
使用Microsoft.Extensions.Logging;
命名空间NS.Controllers
{
公共类HomeController:控制器
{
静态ILogger\u记录器;
公共家庭控制器(iLogger工厂)
{
如果(_logger==null)
_logger=factory.Create(“未处理的错误”);
}
公共IActionResult错误()
{
var feature=HttpContext.Features.Get();
var错误=特征?错误;
_logger.LogError(“Oops!”,error);
返回视图(“~/Views/Shared/Error.cshtml”,错误);
}
}
}

Startup.cs
中使用
.UseExceptionHandler()
您可以设置错误操作的路由:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{

    app.UseExceptionHandler("/error");

}

在这里您可以找到更多信息:

您可以使用
app.UseExceptionHandler(“/error”)
Configure()
method谢谢..我不想在每个控制器中写入公共IActionResult Error(){}..有方法全局写入错误函数吗?它在你的应用程序中全局工作。当您获得异常
UseExceptionHandler()
时,捕获它并重定向到指定的控制器和操作。因此,事实上,您可以将单个
ErrorController
Error
操作一起使用。好的,非常感谢您的快速回复。请记住,目前还没有MVC6。仅ASP.NET核心MVC 1.0和1.1