8

我正在尝试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

我错过了什么?

谢谢

4

2 回答 2

11

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

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
于 2012-06-05T21:41:14.510 回答
6

我自己刚刚遇到这个问题,我很高兴看到 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 团队吗?如果仅针对此状态代码,尽管可能会添加其他一些非常常见的状态代码等效项。

于 2012-06-06T17:33:10.647 回答