2015-05-28 11 views
27

Ich versuche, meine Web-API-Projekt auf ASP.NET 5 zu verschieben. Aber ich habe viele Elemente, die nicht mehr vorhanden sind.IHttpActionResult und Hilfsmethoden in ASP.NET Core

Zum Beispiel IHttpActionResult oder Ok(), NotFound() Methoden. Oder RoutePrefix []

Sollte ich alle IHttpActionResult mit IActionResult ändern? Änderung Ok() mit new ObjectResult? (Ist es das gleiche?)

Was ist mit HttpConfiguration, die in startup.cs nicht mehr vorhanden scheint?

+0

Auch wenn es ein 'WebApiComatShim' Paket in MVC 6 für diese Art von Portabilität Szenarien ist, sein nicht empfohlen, es zu benutzen, also ich würde die neue MVC 6 Art, die Dinge zu verwenden vorschlagen . –

+0

In Bezug auf HttpConfiguration, haben Sie sich angeschaut, wie das neue 'Startup.cs' aussieht? Kannst du es versuchen, es dort zu bewegen? –

+0

der neue mvc 6 Weg dies zu tun ... ok, aber ist zurück Ok (mydata) gleichbedeutend mit neuen ObjectResult (mydata) {StatusCode = 200}; ? – Tim

Antwort

43

IHttpActionResult jetzt effektiv IActionResult und ein Ok mit einer Rückkehr-Objekt zurückgeben, würden Sie return new ObjectResult(...);

So effektiv etwas wie folgt verwenden:

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

Hier ist ein guter Artikel mit mehr Details:

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

+13

Sollte er nicht 'return Ok (" value "+ id)' verwenden? 'Ok()' ist immer noch da und scheint der vernünftige Weg, eine 200-Ok-Antwort von der API darzustellen. – CesarD

+3

@CesarD ja in den letzten Releases ist es zurück zu 'NotFound',' Ok', etc. – Sean

+7

Link ist kaputt ... – Alex

4

Aktualisiertes Antwort-ish

Ich sah, dass jemand die WebApiCompatShim in einem Kommentar referenzierte.

WebApiCompatShim ist immer noch für diese Art von Portabilität Szenarien gepflegt und es ist jetzt freigegeben 1.1.0.

Ich sah, dass Microsoft.AspNetCore.OData 1.0.0-rtm-00011WebApiCompatShim als Abhängigkeit hat. Ich weiß nicht genau, was sie in diesem Bereich erreichen wollen, das sind nur Fakten.

Wenn Sie nicht in ein anderes Kompatibilität Paket bekommen und Sie sind in mehr Refactoring Arbeit suchen, können Sie unter folgendem Ansatz aussehen: WebApiCompatShim - how to configure for a REST api with MVC 6

Sie noch in der Lage sein Ok() zu verwenden, oder Sie können versuchen, Verwenden Sie die OkObjectResult() Methode als Http Wort wurde entfernt, um nicht zu ausführlich sein. 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); 
} 
Verwandte Themen