【问题标题】:Exceptions for http status codeshttp 状态码的例外情况
【发布时间】:2018-03-13 11:40:17
【问题描述】:

C# 中是否提供了针对 http 异常的内置或库?

例如来自 Java,它们都有 400 和 500 错误。他们提供了一堆这样的异常,所以你可以在你的代码中抛出。

https://docs.oracle.com/javaee/7/api/javax/ws/rs/ClientErrorException.html

javax.ws.rs.NotAllowedException
javax.ws.rs.BadRequestException
javax.ws.rs.NotFoundException

用例:

比较在“控制器”中抛出了什么样的异常,然后在“视图”层做出相应的响应,这很有帮助,例如,根据每种类型所需的合同,我有不同类型的自定义响应例外。

想知道是否有 3rd 方开源库或内置自定义类型可以在 C# 中进行比较。

编辑

仍然没有成功。在URL 遇到了一些接近的东西,但无法让它在 .NET 核心上运行,我认为它可以在 .net 标准上使用吗?我在运行 .net core 的 mac 上。

我想我最终会创建自己的自定义 HttpException 类,并将状态代码作为 int 字段。

【问题讨论】:

  • 使用 try catch 块,您可以捕获特定异常、webexceptions、soapexceptions,解释状态代码并相应地处理它。
  • 我正在运行 .net core,知道为什么我在 system.Web 命名空间中看不到 HttpException 吗?
  • 我建议在编写 C# 时不要用 Java 思考。拥有 n 个特定异常类型或一个异常类型并打开状态代码有什么区别……除了个人品味,恕我直言。
  • 是的,我明白,这不是 java 与 c#,它是常见的东西并寻找类型化的异常,这就是允许使用枚举、代码等的全部或一些东西。

标签: c# exception http-error


【解决方案1】:

在 ASP.NET 中,您的控制器可以返回您喜欢的任何状态代码。

例如:

public IActionResult MyApi()
{
    return NotFound()
}

有一些定义的(OK(), NotFound()),也可以自己编:

public IActionResult MyApi()
{
    return StatusCode(401);
}

【讨论】:

  • 是否有命名空间或参考文档?
  • 只是想分享它是一个自定义 MVC 框架,不使用任何特定的 asp.net 控制器。我指的是一般意义上的 mvc 控制器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 2016-10-28
  • 1970-01-01
  • 2013-07-13
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多