2015-05-28 54 views
27

我試圖將我的web api 2項目移動到ASP.NET 5. 但我有很多元素不存在了。在ASP.NET核心IHttpActionResult和幫手方法

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

我應該更換每個IHttpActionResultIActionResult? 更改Ok()與new ObjectResult? (它是一樣的嗎?)

那麼HttpConfiguration那似乎沒有更多的startup.cs目前?

+0

即使有一個'WebApiComatShim'包MVC 6對於這種便攜性的情況,其建議不使用它,所以我建議用做事的新的MVC 6路。 –

+0

關於HttpConfiguration,你看看新的'Startup.cs'是怎麼樣的?你可以嘗試在那裏移動它嗎? –

+0

新的mvc 6這樣做的方式...好吧,但是返回Ok(mydata)相當於返回新的ObjectResult(mydata){StatusCode = 200}; ? – Tim

回答

43

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

+13

不應該使用'return Ok(「value」+ id)'? 'Ok()'仍然存在,似乎是從API中表示200-Ok響應的合理方式。 – CesarD

+3

@CesarD是在最新版本中,它已經回到'NotFound','Ok'等等。 – Sean

+7

鏈接被破壞... – Alex

4

更新回覆 - ish

我看到有人在評論中引用了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); 
}