У меня есть пример использования: при получении свойства в модели произойдет ошибка:
public class Student
{
public Guid Id { get; set; }
public string Name { get; set; }
public int Score { get; set; }
public Student ErrorProperty { get { throw new Exception(); } set { } }
}
Я пытаюсь расширить ErrorProperty: https://localhost: 44383 / odata / Student? $ Expand = ErrorProperty В контроллере похоже, что все в порядке, он не генерирует никаких исключений:
[HttpGet]
[EnableQuery()]
public IActionResult Get(ODataQueryOptions<TEntity> queryOptions, CancellationToken cancellationToken)
{
var list = new List<Student>
{
CreateNewStudent("Cody Allen", 130),
CreateNewStudent("Todd Ostermeier", 160),
CreateNewStudent("Viral Pandya", 140)
};
return Ok(list);
}
После выполнения этого метода (метод Get) модель выдает исключение. В Postman я получаю Could not get response
ошибку: ошибка
Также я создал обработчик ошибок, но он не улавливает такого рода исключения:
public class ODataExceptionHandler
{
public static RequestDelegate HandleException()
{
return async context =>
{
await Handle(context);
};
}
public static Task Handle(HttpContext context)
{
return Task.Run(new Action(() =>
{
context.Response.ContentType = "application/problem+json";
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
var content = JsonConvert.SerializeObject(exceptionHandlerPathFeature);
byte[] byteArray = Encoding.ASCII.GetBytes(content);
context.Response.Body.Write(byteArray);
}));
}
}
Конфигурация:
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(ODataExceptionHandler.HandleException());
});
Как я могу ловить такого рода ошибки?