HttpResponseException不接受HttpStatusCode

时间:2012-06-05 21:21:18

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

我正在尝试按照此截屏视频中的描述(约1分钟)筹集HttpResponseException

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

我错过了什么?

由于

2 个答案:

答案 0 :(得分:11)

如果你正在使用RC,这已经改变了。尝试:

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

答案 1 :(得分: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团队吗?如果仅用于此状态代码,则可能会引入其他一些非常常见的状态代码。