我在这篇博文中看到了它,但这实际上并没有说明如何“启用”它。而且似乎默认情况下它未启用。
我知道这是一种扩展方法,如此处定义:http: //msdn.microsoft.com/en-us/library/hh835786 (v=vs.108).aspx但我如何访问它?如果我键入Request.CreateErrorResponse
,那么编译器将无法识别它。
我已经using System.Net.Http
。
我在这篇博文中看到了它,但这实际上并没有说明如何“启用”它。而且似乎默认情况下它未启用。
我知道这是一种扩展方法,如此处定义:http: //msdn.microsoft.com/en-us/library/hh835786 (v=vs.108).aspx但我如何访问它?如果我键入Request.CreateErrorResponse
,那么编译器将无法识别它。
我已经using System.Net.Http
。
我在发布版本中也注意到了这一点。如果你没有正确的 using 语句,它会出错。你需要 :
using System.Net.Http;
即使你已经有了这个:
using System.Web.Http.Controllers;
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() 方法。
您还在使用预发布版或发布版吗?有许多扩展直到发布之前才出现,并且在 webapi 发布的早期版本中也不存在。我不确定这是否是其中之一,但这可能是导致您的问题的原因。
尽管已经回答了重要的问题。
另一种最愚蠢的可能性是您可能选择了错误类型的控制器。确保你已经创建了一个Web API 控制器,如果你不能拥有 MVC 控制器
Request.CreateErrorResponse()
您可能会发现此问题的另一种可能性。
在 .net 核心中,添加Microsoft.AspNetCore.Mvc.WebApiCompatShim.dll
.
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);
}
}
使用System.Web.Http程序集。来源:CreateErrorResponse 方法
我最好的猜测是,这是您没有引用的第三个程序集,这就是问题所在。
不幸的是,我无法访问我的电脑,无法在手机上浏览,所以我无法为您找到该文件。根据文档,它应该在 System.Web.Http.SelfHost.dll 中,所以我想你可以搜索那个文件来找到它。