29

我在这篇博文中看到了它,但这实际上并没有说明如何“启用”它。而且似乎默认情况下它未启用。

我知道这是一种扩展方法,如此处定义:http: //msdn.microsoft.com/en-us/library/hh835786 (v=vs.108).aspx但我如何访问它?如果我键入Request.CreateErrorResponse,那么编译器将无法识别它。

我已经using System.Net.Http

4

8 回答 8

46

我在发布版本中也注意到了这一点。如果你没有正确的 using 语句,它会出错。你需要 :

using System.Net.Http;

即使你已经有了这个:

using System.Web.Http.Controllers;
于 2012-11-16T20:54:32.890 回答
3

Request 是 ApiController 类的公共属性,您应该可以在该控制器中的任何 API 操作中使用它。

public abstract class ApiController
{
   ...
   public HttpRequestMessage Request { get; set; }
}

这是一个适合我的小代码示例:

using System.Net;
using System.Net.Http;
using System.Web.Http;


public class MyFirstApiController : ApiController
{
    // GET 
    public HttpResponseMessage Get(int id)
    {
        return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Some   message here");
    }
}

有趣的是,如果我不使用 System.Net.Http;声明,Request 不再有 CreateErrorResponse() 方法。

于 2012-09-25T21:20:07.203 回答
3

您还在使用预发布版或发布版吗?有许多扩展直到发布之前才出现,并且在 webapi 发布的早期版本中也不存在。我不确定这是否是其中之一,但这可能是导致您的问题的原因。

于 2012-09-23T21:04:26.757 回答
2

尽管已经回答了重要的问题。

另一种最愚蠢的可能性是您可能选择了错误类型的控制器。确保你已经创建了一个Web API 控制器,如果你不能拥有 MVC 控制器

Request.CreateErrorResponse()

您可能会发现此问题的另一种可能性。

于 2017-03-26T17:04:04.140 回答
1

在 .net 核心中,添加Microsoft.AspNetCore.Mvc.WebApiCompatShim.dll.

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httprequestmessageextensions.createerrorresponse?view=aspnetcore-2.0

于 2018-04-16T09:45:03.217 回答
1
you can use from that In block Try-Catch.

 [HttpGet]
    public HttpResponseMessage DownloadVideo(Guid id, string title)
    {
        try
        {
          //Your Code at the end return result
        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex.Message);
        }
    }
于 2018-10-10T12:17:15.630 回答
0

使用System.Web.Http程序集。来源:CreateErrorResponse 方法

于 2015-10-15T20:33:32.283 回答
-1

我最好的猜测是,这是您没有引用的第三个程序集,这就是问题所在。

不幸的是,我无法访问我的电脑,无法在手机上浏览,所以我无法为您找到该文件。根据文档,它应该在 System.Web.Http.SelfHost.dll 中,所以我想你可以搜索那个文件来找到它。

于 2012-09-23T20:18:30.137 回答