У меня есть простое ApiController
, которое я пытаюсь отловить и вернуть ошибку.Это было для быстрой OnExceptionAspect
демонстрации, но я столкнулся с загадкой: я не могу понять, как вернуть BadRequest
как args.ReturnValue
.Я думал, что это будет проще, чем это.Я впервые использую PostSharp за очень долгое время и, конечно, впервые при использовании ASP.Net Core.
Примечание: у меня неверная строка соединения в контексте, чтобы вызвать быструю ошибку (не показана).
ParentController
[HttpGet("Get/{studentId}")]
[ActionResultExceptionAspect(StatusCode = HttpStatusCode.BadRequest)]
public ActionResult<IEnumerable<ParentModel>> RetrieveParents(string studentId)
{
var query = Context.ParentViews
.Where(x => x.StudentID == studentId)
.Select(s => EntityMapper.MapFromEntity(s));
return query.ToArray();
}
ActionResultExceptionAspect
public override void OnException(MethodExecutionArgs args)
{
args.FlowBehavior = FlowBehavior.Return;
args.ReturnValue = ((StudentControllerBase)args.Instance).BadRequest();
}
Я получаю ошибку:
System.InvalidCastException: Unable to cast object of type 'Microsoft.AspNetCore.Mvc.BadRequestResult' to type 'Microsoft.AspNetCore.Mvc.ActionResult`1[System.Collections.Generic.IEnumerable`1[Student.Models.ParentModel]]'.