Net Core 2的HandleErrorAttribute相当于什么?

12

我正在将 .Net 4.6.2 项目迁移到 Net Core 2。

HandleErrorAttribute 的等效方法是什么?在第二行以下收到错误。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new CustomerAuthorize());
    filters.Add(new HandleErrorAttribute()); 
}

错误:

The type or namespace name 'HandleErrorAttribute' could not be found (are you missing a using directive or an assembly reference?

https://forums.asp.net/t/2125006.aspx?How+to+use+exception+filters+in+the+asp+net+core+web+project - Jon
1个回答

7
在asp.net core中,您可以使用异常过滤器。我们可以创建一个自定义的异常过滤器,例如:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
....
....

public class HandleExceptionAttribute : ExceptionFilterAttribute
{
 public override void OnException(ExceptionContext context)
 {
  var result = new ViewResult { ViewName = "Error" };
  var modelMetadata = new EmptyModelMetadataProvider();
  result.ViewData = new ViewDataDictionary(
          modelMetadata, context.ModelState);
  result.ViewData.Add("HandleException", 
          context.Exception);
  context.Result = result;
  context.ExceptionHandled = true;
 }           
}

可以在三个范围之一向管道添加过滤器。您可以通过使用属性将过滤器添加到特定的操作方法或控制器类中。或者,您可以为所有控制器和操作注册全局过滤器。通过在ConfigureServices中将其添加到MvcOptions.Filters集合中,可以全局添加过滤器:

 services.AddMvc(options=>options.Filters.Add(new HandleExceptionAttribute()));

请参考在ASP.NET Core中创建自定义异常过滤器


谢谢!你觉得这里的解决方案怎么样?否则 { app.UseExceptionHandler("/error"); }, https://forums.asp.net/t/2125006.aspx?How+to+use+exception+filters+in+the+asp+net+core+web+project - user11224167
它是一样的。该链接使您可以将日志记录添加到继承ExceptionFilterAttribute的过滤器中。 app.UseExceptionHandler("/error")使用异常处理中间件来配置自定义错误处理页面。 - Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接