ASP.NET Core

时间:2015-05-28 16:10:09

标签: asp.net-web-api owin asp.net-core

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

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

我应该使用IHttpActionResult更改每个IActionResult吗? 使用Ok更改new ObjectResult()? (它是一样的吗?)

在startup.cs中似乎不再存在HttpConfiguration怎么办?

3 个答案:

答案 0 :(得分:62)

IHttpActionResult现已有效IActionResult,要返回带有返回对象的Ok,您可以使用return new ObjectResult(...);

如此有效:

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

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

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

答案 1 :(得分:5)

更新了回复

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

WebApiCompatShim仍然针对这种可移植性场景进行维护,现在已经发布了1.1.0。

我看到Microsoft.AspNetCore.OData 1.0.0-rtm-00011WebApiCompatShim作为依赖。我不知道他们在这方面究竟想要达到的目的,这些只是事实。

如果您没有获得另一个兼容性软件包并且您正在研究更多重构工作,那么您可以查看以下方法:WebApiCompatShim - how to configure for a REST api with MVC 6

您仍然可以使用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);
}

答案 2 :(得分:0)

 At 2.2, the asp.net core migration guide state to replace IHttpActionResult with ActionResult.  This works for me:           

            [Produces("application/json")]
            [HttpPost]
            public ActionResult GetSomeTable([FromBody] GridState state)
            {
                return Ok(new
                {
                    data = query.ToList(),
                    paging = new
                    {
                        Total = total,
                        Limit = state.limit,
                        page = state.page,
                        Returned = query.Count()
                    }
                });
}