ASP.NET Core中的IHttpActionResult和帮助器方法

Tim*_*Tim 37 asp.net-web-api owin asp.net-core

我正在尝试将我的web api 2项目移动到ASP.NET 5.但是我有许多不再存在的元素.

例如IHttpActionResultOk(), NotFound()方法.或者RoutePrefix[]

我应该改变每一个IHttpActionResultIActionResult?改变Ok()用new ObjectResult?(它是一样的吗?)

那怎么样HttpConfiguration似乎在startup.cs中不存在?

Sea*_*ean 64

IHttpActionResult现在是有效的IActionResult,并且返回一个Ok带有返回对象,你可以使用return new ObjectResult(...);

所以有效地这样:

public IActionResult Get(int id)
{
    if (id == 1) return HttpNotFound("not found!");
    return new ObjectResult("value: " + id);
}
Run Code Online (Sandbox Code Playgroud)

这是一篇更详细的好文章:

http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6

  • 他不应该使用`return Ok("value"+ id)`?`Ok()`仍然存在,似乎是表示API的200-Ok响应的合理方式. (14认同)
  • @CesarD在最新版本中是的,它已经回到了'NotFound`,`Ok`等. (3认同)
  • 微软无法在线保存自己的文档,这真是遗憾。该 URL 现在重定向到(一个?)ASP.NET 主页。 (3认同)

Raz*_*tru 5

更新回复

我看到有人WebApiCompatShim在评论中引用了。

WebApiCompatShim 仍针对此类可移植性场景维护该工具,并且现已发布1.1.0。

我认为这Microsoft.AspNetCore.OData 1.0.0-rtm-00011具有WebApiCompatShim依赖性。我不完全知道他们在这一领域要实现的目标,这只是事实。

如果您不打算使用其他兼容性软件包,而是要进行更多的重构工作,则可以查看以下方法:WebApiCompatShim-如何使用MVC 6配置REST api

您仍然可以使用Ok(),也可以尝试使用该OkObjectResult()方法,因为Http单词已被删除,以免太冗长。HttpOkObjectResult->OkObjectResult

[HttpPost]
public ObjectResult Post([FromBody]string value)
{
    var item = new {Name= "test", id=1};
    return new OkObjectResult(item);
}


[HttpPost]
public ObjectResult Post([FromBody]string value)
{
    var item = new {Name= "test", id=1};
    return Ok(item);
}
Run Code Online (Sandbox Code Playgroud)