2013-07-13 10 views
7

Co jest nie tak z ciągiem "con"?ASP.NET MVC 4 Web API nie może zmapować ścieżki zawierającej ciąg "con"?

OK, moja konfiguracja trasy API jest dość nieciekawe:

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

LocationController ma następującą metodę:

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

wszystko działa tak jak powinno, oprócz tego, że jestem coraz HTTP 404 błąd gdy próbuję dostać się do zasobu takiego:

/api/lokalizacja/con

W tym przypadku metoda nie jest trafiona. Dziwne jest to, że jeśli ustawię inny ciąg inny niż "con" jako parametr id, metoda kontrolera jest trafiona i działa poprawnie!

To się dzieje podczas debugowania mojej aplikacji na localhost przy pomocy Cassini (to samo z IIS Express). W moim katalogu projektu nie ma plików o nazwie "con". Po wystąpieniu zdarzenia błędu aplikacji, program IntelliTrace ujawnił wyjątek HttpException z komunikatem: "Nie można zmapować ścieżki"/api/location/con "" ...

Jakieś wskazówki? Czy to znany błąd?

Z góry dziękuję!

Odpowiedz

11

Niektóre słowa kluczowe są niedozwolone w adresie URL, a CON jest jednym z nich. Zobacz this. Sposób obejścia tego problemu polega na umieszczeniu w pliku Web.config następującej wartości: <system.web>.

<httpRuntime relaxedUrlToFileSystemMapping="true" /> 
+0

Ah, najwyraźniej niektóre nieumarłe zombie wciąż nas prześladują ... :) Dzięki za wspaniałą odpowiedź! –

+0

Co za rzeczywiste F? DZIĘKUJEMY RANDOM STRANGER W INTERNECIE !! – AndreasKnudsen

+0

Myślałem, że oszalałem, kiedy to się stało. Dzięki za to! – Krummelz

Powiązane problemy