2015-08-12 12 views
7

Zostałem zmuszony do uaktualnienia Microsoft.AspNet.WebApi.Client i Microsoft.AspNet.WebApi.Core od wersji 5.0.0.0 do 5.2.0.0 ze względu na zależność od innego projektu, a teraz mój interfejs API wyrzuca błąd "Bezpośrednia trasa nie może korzystać z parametru" kontroler ".Podaj literalną ścieżkę zamiast tego parametru, aby utworzyć trasę do kontrolera".Aktualizacja do błędu WebApi.Core - Bezpośrednia trasa nie może korzystać z parametru "kontroler"

Błąd zostaje wrzucony na inicjalizacji HttpConfiguration w Global.asax.cs Dzwoniąc

GlobalConfiguration.Configure(WebApiConfig.Register); 

Wydaje się, że biblioteka Rdzeń, który jest przyczyną problemu. Kiedy zaktualizowałem tylko klienta, nie wyrzuciłem błędu.

Zauważyłem, że jeśli skomentuję atrybuty trasy ze wszystkich kontrolerów w projekcie, to nie będzie on już zgłaszał błędu, np.

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

Jednak ich usunięcie nie jest dobrym rozwiązaniem ze względu na liczbę zależnych aplikacji.

W Google/Binging błąd jest o wiele zero przydatnych informacji na ten temat. Czy ktokolwiek może zaoferować wgląd w ten błąd i zasugerować, w jaki sposób mogę go naprawić?

Odpowiedz

15

Wyobraziłem to, a raczej mój kolega. Teraz wydaje się oczywiste, jeśli spojrzysz na błąd. Było to spowodowane atrybutami trasy na niektórych kontrolerach (po prostu nie jest to przykład użyty w pytaniu) zawierającym {kontroler}. na przykład

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

Zmiana tego użyć Hardcoded nazwę kontrolera, jak pokazano poniżej, problem został rozwiązany.

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

Aby uniknąć nieporozumień: w „Podstawowych ASP.NET Web Applications”, przynajmniej w .NET Rdzenia 2.0, jeden * * można użyć zastępczego kontrolera w „Szlaku” atrybuty, ale z * * nawiasach kwadratowych. Na przykład '[Route (" api/[controller]/editGroups ")]' –

Powiązane problemy