Я перехожу из веб-API WCF к новому веб-API ASP.NET MVC 4. У меня есть UserController, и я хочу иметь метод с именем Authenticate. Я вижу примеры того, как делать GetAll, GetOne, Post и Delete, однако что, если я хочу добавить дополнительные методы в эти сервисы? Например, у моего UserService должен быть метод под названием Authenticate, где они передают имя пользователя и пароль, однако это не работает.Пользовательские имена методов в веб-API ASP.NET
public class UsersController : BaseApiController
{
public string GetAll()
{
return "getall!";
}
public string Get(int id)
{
return "get 1! " + id;
}
public User GetAuthenticate(string userName, string password, string applicationName)
{
LogWriter.Write(String.Format("Received authenticate request for username {0} and password {1} and application {2}",
userName, password, applicationName));
//check if valid leapfrog login.
var decodedUsername = userName.Replace("%40", "@");
var encodedPassword = password.Length > 0 ? Utility.HashString(password) : String.Empty;
var leapFrogUsers = LeapFrogUserData.FindAll(decodedUsername, encodedPassword);
if (leapFrogUsers.Count > 0)
{
return new User
{
Id = (uint)leapFrogUsers[0].Id,
Guid = leapFrogUsers[0].Guid
};
}
else
throw new HttpResponseException("Invalid login credentials");
}
}
я могу перейти к MyAPI/API/пользователей/и он будет вызывать GETALL и я могу перейти к MyAPI/API/пользователей/1 и он будет вызывать Get, однако, если я позвоню MyAPI/API/пользователей/аутентификации имя пользователя = {0} & пароль = {1}, то он будет вызывать Get (НЕ аутентифицировать) и ошибка:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.String Get(Int32)' in 'Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Как я могу называть пользовательские имена методов, таких как Authenticate?
См. Эту ссылку: 5-й ответ http://stackoverflow.com/questions/12775590/web-api-routing-for-multiple-get-methods-in-asp-net-mvc-4/40261803#40261803 –