【问题标题】:HttpResponseException not accepting HttpStatusCodeHttpResponseException 不接受 HttpStatusCode
【发布时间】:2012-06-05 21:21:17
【问题描述】:

我正在尝试提出HttpResponseException,如此截屏视频中所述(大约 1 分钟)

throw new HttpResponseException(HttpStatusCode.Unauthorized);

但应用程序无法编译,因为它会引发以下错误:

The best overloaded method match for 'System.Web.Http.HttpResponseException.HttpResponseException(System.Net.Http.HttpResponseMessage)' has some invalid arguments

msdn 上的文档说它有一个接受HttpResponseMessage 枚举的构造函数。 http://msdn.microsoft.com/en-us/library/hh835324%28v=vs.108%29.aspx

我错过了什么?

谢谢

【问题讨论】:

  • 你也可以发布你的实际代码吗?
  • 当您创建 HttpResponseException 并点击正确的括号时,您看到文档显示的两个构造函数还是只有一个?如果只有一个,那么您仅限于 HttpResponseMessage....或者....您使用的框架版本与文档不同。

标签: c# asp.net http httpresponse asp.net-web-api


【解决方案1】:

如果您使用的是 RC,这已经改变了。试试:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));

【讨论】:

  • 如果我需要向客户发送一些消息?
  • @Zote - 创建一个 HttpResponseMessage 变量,设置 Content 属性,然后传递给 HttpResponseException。或者,如果您想变得真正花哨,我已经在returning a custom error type 上写了一篇文章。
  • RC 是什么意思?我怎么知道我是否在使用 RC?
  • 发帖时,Web API Release Candidate 刚刚问世,与原帖中提到的截屏视频制作时的 Beta 版相比发生了一些变化。如果您从 6 月初开始下载 Web API 或将其用作最近的 VS 2012 RTM 的一部分,我的回答中提到的格式适用。
【解决方案2】:

我自己也遇到了这个问题,很高兴看到 smlync 提供的答案,但是,令人失望的是,在这种情况下看到 API 变得更加冗长!恕我直言,以下内容倾向于“可怕”的描述,特别是当这个异常(最重要的是)多次填充每个控制器时:

    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));

我可能会改用它,也许你们中的一些人会发现它也很有用:

    throw new Http404NotFoundException();

将以下内容放在您想要的任何位置:

public class Http404NotFoundException : HttpResponseException
{
    public Http404NotFoundException()
        : base(new HttpResponseMessage(HttpStatusCode.NotFound)) { }
}

这不是更干净、受人喜爱的 ASP.NET WebApi 团队吗?如果只是为了这个状态代码,虽然可能会抛出其他几个非常常见的状态代码等价物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多