ASP.net WebApi Sono stati trovati più tipi di controller che corrispondono all’URL

Ho aggiunto una nuova route HttpPost “api / export / error /” al mio WebApi, usando l’instradamento degli attributi, e sto ricevendo un errore:

Sono stati trovati più tipi di controller che corrispondono all’URL. Questo può accadere se le rotte attributo su più controller corrispondono all’URL richiesto. \ R \ n \ r \ nLa richiesta ha trovato i seguenti tipi di controller corrispondenti: \ r \ nMyApp.Controllers.ExportErrorController \ r \ nMyApp.Controllers.ExportGeneratorController

Ma non ho gli stessi percorsi in controller diversi che vedo; ecco gli unici percorsi in questi due controller:

ExportErrorController.cs

[HttpGet] [Route( "api/export/error/total/" )]

[HttpGet] [Route( "api/export/error/channel/{channelId}/" )]

[HttpPost] [Route( "api/export/error/" )]

[HttpDelete] [Route( "api/export/error/{id}/" )]

[HttpPut] [Route( "api/export/error/clear/" )]

ExportGeneratorController.cs

[HttpGet] [Route( "api/2/export/{channelId}/" )]

[HttpPost] [Route( "api/2/export/generate-word/{debugInfo}/" )]

[HttpPost] [Route( "api/2/export/generate-excel/{debugInfo}/" )]

Non riesco a vedere nessun posto che abbia lo stesso tra i due controller

Apparentemente, ASP.Net non valuta il parametro ‘types’ oi metodi durante la determinazione del percorso da utilizzare in modo da trovare e abbinare il testo del percorso “error” come parametro potenziale per ‘channelid’ anche se erano metodi diversi.

L’aggiunta di un tipo al parametro ha aiutato a risolverlo correttamente così: [Route( "api/2/export/{channelId}/" )]

Viene corretto cambiandolo in: [Route( "api/2/export/{channelId:int}/" )]