2015-05-28 5 views
27

Sto provando a spostare il mio progetto Web api 2 su ASP.NET 5. Ma ho molti elementi che non sono più presenti.IHttpActionRisultati e metodi di supporto in ASP.NET Core

Ad esempio IHttpActionResult o Ok(), NotFound() metodi. O RoutePrefix []

Devo cambiare ogni IHttpActionResult con IActionResult? Modifica Ok() con new ObjectResult? (è lo stesso?)

Che dire di HttpConfiguration che non sembra più presente in startup.cs?

+0

Anche se c'è un pacchetto di 'WebApiComatShim' in MVC 6 per questo tipo di scenari di portabilità, la sua raccomanda di non usarlo, quindi vorrei suggerire di utilizzare il nuovo MVC 6 modo di fare le cose . –

+0

Per quanto riguarda HttpConfiguration, hai visto come appare il nuovo 'Startup.cs'? Puoi provare a spostarlo lì? –

+0

il nuovo modo di mvc 6 per fare questo ... ok, ma è restituito Ok (mydata) equivalente a restituire nuovo ObjectResult (mydata) {StatusCode = 200}; ? – Tim

risposta

43

IHttpActionResult è ora in modo efficace IActionResult, e per restituire un Ok con un oggetto di ritorno, utilizza return new ObjectResult(...);

Così effettivamente qualcosa di simile:

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

Ecco un buon articolo con maggiore dettaglio:

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

+13

Non dovrebbe usare 'return Ok (" value "+ id)'? 'Ok()' è ancora lì e sembra il modo ragionevole per rappresentare una risposta 200-Ok dall'API. – CesarD

+3

@CesarD sì nelle ultime versioni è tornato a 'NotFound',' Ok', ecc. Il collegamento – Sean

+7

è interrotto ... – Alex

4

Aggiornamento risposta-ish

Ho visto che qualcuno ha fatto riferimento allo WebApiCompatShim in un commento.

WebApiCompatShim viene mantenuto per questo tipo di scenari di portabilità ed è ora rilasciato 1.1.0.

Ho visto che Microsoft.AspNetCore.OData 1.0.0-rtm-00011 ha WebApiCompatShim come dipendenza. Non so esattamente cosa stanno cercando di ottenere in quest'area, questi sono solo fatti.

Se non siete in ricevendo un altro pacchetto di compatibilità e stai cercando in più di lavoro refactoring, è possibile guardare il seguente approccio: WebApiCompatShim - how to configure for a REST api with MVC 6

si sarà ancora in grado di utilizzare Ok() o si può provare a utilizzare il metodo OkObjectResult() come la parola Http è stata rimossa per non essere troppo prolissa. 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); 
}