ASP.NET API中Http状态代码的自定义异常

编程入门 行业动态 更新时间:2024-10-26 09:34:46
本文介绍了ASP.NET API中Http状态代码的自定义异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在业务层中有几个自定义异常,这些异常会在我的ASP.NET应用程序中冒充到我的API方法。

I have a couple of custom exceptions in my business layer that bubble up to my API methods in my ASP.NET application.

当前,它们都转换为Http状态500。如何映射这些自定义异常,以便可以返回不同的Http状态代码?

Currently, they all translate to Http status 500. How do I map these custom exceptions so that I could return different Http status codes?

推荐答案

使用 Response.StatusCode 设置和获取方法。

本地异常处理:对于本地操作异常处理,请将以下内容放入调用代码中。

Local Exception handling: For local action exception handling, put the following inside the calling code.

var responseCode = Response.StatusCode; try { // Exception was called } catch (BusinessLayerException1) { responseCode = 201 } catch (BusinessLayerException2) { responseCode = 202 } Response.StatusCode = responseCode;

关于跨控制器行为:您应遵循以下步骤。

  • 创建抽象BaseController
  • 使您当前的Controller继承自BaseController。
  • 在BaseController中添加以下逻辑。
  • BaseController.cs

    public abstract class BaseController : Controller { protected override void OnException(ExceptionContext filterContext) { var responseCode = Response.StatusCode; var exception = filterContext.Exception; switch (exception.GetType().ToString()) { case "ArgumentNullException": responseCode = 601; break; case "InvalidCastException": responseCode = 602; break; } Response.StatusCode = responseCode; base.OnException(filterContext); } }

    注意: 您还可以添加已处理的异常并将其重定向到其他 Controller / Action

    filterContext.ExceptionHandled = true; filterContext.Result = this.RedirectToAction("Index", "Error");

    有关ASP.NET MVC的更多信息,可以找到此处

    更多推荐

    ASP.NET API中Http状态代码的自定义异常

    本文发布于:2023-11-15 19:02:27,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1597135.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:自定义   异常   状态   代码   NET

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!