在ASP.NET Core 7 Web API中,当期望自定义模型但出现异常时,如何返回异常信息。
可以使用ActionFilter实现自定义的异常处理器,将异常信息包裹在HTTP响应中返回给客户端。具体步骤如下:
public class CustomExceptionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext context)
{
if (context.Exception != null)
{
context.HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
context.Result = new JsonResult(new
{
message = context.Exception.Message
});
context.ExceptionHandled = true;
}
base.OnActionExecuted(context);
}
}
[CustomExceptionFilter]
public class CustomModelController : ControllerBase
{
[HttpPost]
public IActionResult Post([FromBody] CustomModel model)
{
if (model == null)
throw new ArgumentNullException(nameof(model));
// ...
}
}
这样,当控制器或Action中的代码抛出异常时,自定义异常过滤器将捕获该异常并将其信息包含在HTTP响应中返回给客户端。
注意,在示例代码中,我们假设自定义模型为CustomModel,并在Post方法中使用FromBody特性将请求体反序列化为CustomModel对象。在实际项目中,可以根据实际需要调整代码逻辑,但原理基本相同。
上一篇:ASP.NETCore7System.InvalidOperationException:TheConnectionStringpropertyhasnotbeeninitialized
下一篇:ASP.NETCore7WebAPI授权失败。未满足以下要求:DenyAnonymousAuthorizationRequirement:需要认证的用户