Let dire che ho due metodi in MVC Controller API 4 Web:parametri URL in MVC 4 Web API
public IQueryable<A> Get() {}
E
public A Get(int id) {}
E il seguente itinerario:
routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Funziona come previsto. L'aggiunta di una più parametri, ad esempio:
public IQueryable<A> Get(int p) {}
public A Get(int id, int p) {}
porta ad una situazione in cui MVC ritorna 404 per la seguente richiesta:
GET /controller?p=100
O
GET /controller/1?p=100
con il messaggio "è stato trovato Nessuna azione sul controller 'controller' che corrisponde alla richiesta "
Mi aspetto che URL parame ters dovrebbe essere cablato da MVC senza problemi, ma non è vero. Si tratta di un bug o di una mia incomprensione su come le mappe MVC richiedono all'azione?
[qui] (http: // forum. asp.net/t/1774984.aspx/2/10) lo stesso problema è descritto ma senza alcuna conclusione è previsto questo comportamento –
PS. a causa dello stesso problema, la sintassi OData nell'URL non funzionerà se ci sono più di un metodo associato al verbo HTTP. –
Puoi mostrare il tuo percorso reale e tutti i metodi e le firme nel tuo controller? –