Mam kontroler o nazwie LoginController z metody GET z podpisem:MVC4 Web interfejs API Reszta z wielu parametrów
public string Get(string Key, string Code, string UserID, string Password)
Chcę być w stanie wywołać ją z wywołania podobnego do:
http://localhost:1234/api/Login/KeyValue/CodeValue/UserValue/PasswordValue
Nie mogę tego zrobić. Jeśli zadzwonię pod numer:
http://localhost:1234/api/Login?Key=KeyValue&Code=CodeValueUserID=UserValue&Password=PasswordValue
Połączenie zostanie wykonane.
Próbowałem dodawania tras, takie jak poniżej, aby Global.asax
routes.MapHttpRoute(name: "Login", routeTemplate: "api/{controller}/{action}/{Key}/{Code}/{UserID}/{Password}",
defaults: new { Key = UrlParameter.Optional, Code = UrlParameter.Optional, UserID = UrlParameter.Optional, Password = UrlParameter.Optional });
lub
routes.MapHttpRoute(name: "Login", routeTemplate: "api/{controller}/{Key}/{Code}/{UserID}/{Password}",
defaults: new { Key = UrlParameter.Optional, Code = UrlParameter.Optional, UserID = UrlParameter.Optional, Password = UrlParameter.Optional });
te nie wydają się działać. Gdzie się mylę, czy jest to możliwe? Udało mi się to zrobić w wersji RC WebApi z MVC3.
jestem w porozumieniu, muszę wystawiać API osobie trzeciej więc format jest poza moją kontrolą. Próbowałem tego, co sugerowałeś, ale żadne podejście nie działa (dodawanie GET lub określanie domyślnej akcji). Próbowałem również dodać [HttpGet] do etykiety kontrolera. – keitn
Masz rację. Pomyłkowo dodałem metodę RegisterRoutes do Global.asax (jak w MVC3), kiedy dodałem ją do RouteConfig.cs wszystko działa dobrze. Dzięki. – keitn