2013-07-13 10 views
7

Cosa c'è di così sbagliato nella stringa "con"?ASP.NET MVC 4 Web API non riesce a mappare il percorso contenente la stringa "con"?

OK, la mia configurazione percorso API è piuttosto interessante:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

Il LocationController ha il seguente metodo:

public List<LocationViewModel> Get(string id) 
{ 
    return _ds.SearchLocations(id); 
} 

Tutto funziona come dovrebbe, se non che sto ottenendo un errore HTTP 404 quando provo a ottenere la risorsa in questo modo:

/api/location/con

In questo caso, il metodo non viene colpito. La cosa strana è che se imposto qualsiasi altra stringa diversa da "con" come parametro id, il metodo controller viene colpito e funziona correttamente!

Ciò accade mentre eseguo il debug della mia applicazione su localhost con Cassini (stessa cosa con IIS Express). Non ci sono file chiamati "con" nella directory del mio progetto. Dopo aver gestito l'evento di errore dell'app, IntelliTrace ha rivelato un'HttpException con messaggio: "Impossibile mappare il percorso"/api/location/con "" ...

Eventuali indizi? È un bug noto?

Grazie in anticipo!

risposta

11

Alcune parole chiave non sono consentite nell'URL e CON è una di queste. Vedi this. La soluzione alternativa consiste nel includere quanto segue sotto <system.web> nel proprio Web.config.

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 
+0

Ah, a quanto pare alcuni zombi non morti ci stanno ancora ossessionando ... :) Grazie per l'ottima risposta! –

+0

Che F attuale? GRAZIE CASE SCONOSCIUTO SU INTERNET !! – AndreasKnudsen

+0

Ho pensato che stavo impazzendo quando è successo. Grazie per questo! – Krummelz

Problemi correlati