2015-08-12 8 views
7

Sono stato forzato ad aggiornare Microsoft.AspNet.WebApi.Client e Microsoft.AspNet.WebApi.Core dalla versione 5.0.0.0 alla 5.2.0.0 a causa di una dipendenza da un altro progetto e ora la mia API sta generando l'errore "Un percorso diretto non può utilizzare il parametro 'controller'. Specifica un percorso letterale al posto di questo parametro per creare una rotta verso un controller".Errore di aggiornamento a WebApi.Core: un percorso diretto non può utilizzare il parametro 'controller'

L'errore si butta sulla inizializzazione del HttpConfiguration entro Global.asax.cs al momento della chiamata

GlobalConfiguration.Configure(WebApiConfig.Register); 

Sembra essere la libreria di base che causa il problema. Quando ho aggiornato solo il client, non ha generato l'errore.

Ho notato che se commento gli attributi del percorso da tutti i controller all'interno del progetto, non genera più l'errore, ad es.

[Route("api/storage/series/{series}/documentId/{documentId}")] 

Tuttavia, la rimozione di questi non è una soluzione praticabile a causa del numero di applicazioni dipendenti.

Su Google/Binging ci sono praticamente zero informazioni utili su di esso. Qualcuno può offrire qualche idea su questo errore e suggerire come potrei fare per risolverlo?

risposta

15

Capito questo, o meglio il mio collega ha fatto. Sembra ovvio ora se si guarda l'errore. Era dovuto agli attributi del percorso su alcuni dei nostri controller (solo non l'esempio che ho usato nella domanda) contenente {controller}. per esempio.

[Route("api/{controller}/editGroups")] 

La modifica di questo per utilizzare il nome del controller con hardcoded, come mostrato di seguito, ha risolto il problema.

[Route("api/documents/editGroups")] 
+0

per evitare equivoci: in "Applicazioni Web ASP.NET Core", almeno in .NET core 2.0, uno * * può utilizzare un segnaposto controllore in "Strada" attributi, ma con parentesi quadre * *. Ad esempio '[Route (" api/[controller]/editGroups ")]' –

Problemi correlati