2015-04-14 9 views
19

Ho una configurazione di base dell'API Web 2 con alcuni routing di base.Web Api 2 Post - UrlHelper.Link non deve restituire null

Di seguito è riportato il percorso e il post predefinito per gli inserimenti. Quando chiamo il palo il record viene creato perfettamente nel database ma la chiamata "CreatedAtRoute" restituisce un errore 500 che indica:

ExceptionMessage: "UrlHelper.Link non deve restituire nulla." ExceptionType: "System.InvalidOperationException"

Perché dovrei ricevere questo errore?

[RoutePrefix("api/casenotes")] 
    public class CasenoteController : ApiController... 



// POST api/Casenote 
[Route("")] 
[ResponseType(typeof(client_admission_casenote))] 
    public async Task<IHttpActionResult> Postclient_admission_casenote (client_admission_casenote client_admission_casenote) 
{ 

    Request.GetRequestContext().IncludeErrorDetail = true; 

    if (!ModelState.IsValid) 
    { 
     return BadRequest(ModelState); 
    } 

    db.client_admission_casenote.Add(client_admission_casenote); 
    await db.SaveChangesAsync(); 

    return CreatedAtRoute("DefaultApi", new { id = client_admission_casenote.casenote_id }, client_admission_casenote); 
    } 

risposta

34

Dal momento che si sta utilizzando attributi di routing .. si deve assegnare un nome al percorso .. cioè [percorso ("API/libri/{id}", Name = "GetBookById")]

e l'uso del nome percorso sul url.link() chiamata

vedi dettagli qui .. http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-names

+0

Grazie Ronnel, questo dovrebbe fare il trucco da informazioni, ma ho ancora ottenere l'errore. // GET api/Casenote/5 [Route ("{casenoteId}/detail", Name = "GetSingleCasenote")] [ResponseType (typeof (client_admission_casenote))] e quindi utilizzare il nome nel post: return CreatedAtRoute ("GetSingleCasenote ", nuovo {id = client_admission_casenote.casenote_id}, client_admission_casenote); } –

+1

Ah, è perché ho cambiato il valore predefinito "id" in "casenoteId". Ho dovuto modificare: CreatedAtRoute ("GetSingleCasenote", new {casenoteId = client_admission_casenote.casenote_id}, client_admission_casenote); } Grazie mille Ronnel !!! –

+0

sono felice che tu l'abbia risolto. – Ronnel

Problemi correlati