Net Core 2 Эквивалент HandleErrorAttribute - PullRequest
0 голосов
/ 21 апреля 2019

Я перевожу проект .Net 4.6.2 в Net Core 2.

Что эквивалентно HandleErrorAttribute? Ошибка получения ниже 2-й строки

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?

1 Ответ

0 голосов
/ 22 апреля 2019

В ядре asp.net вы можете использовать Фильтры исключений .

Мы можем создать собственный фильтр исключений, например:

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;
 }           
}

Можно добавить фильтрк трубопроводу в одной из трех областей применения.Вы можете добавить фильтр к определенному методу действия или к классу контроллера, используя атрибут.Или вы можете зарегистрировать фильтр глобально для всех контроллеров и действий.Фильтры добавляются глобально, добавляя их в коллекцию MvcOptions.Filters в ConfigureServices:

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

См. Создание настраиваемого фильтра исключений в ASP.NET Core .

...