Я перетворюю з веб-API WCF в новий веб-API ASP.NET MVC 4. У мене є UsersController, і я хочу мати метод на ім'я Authenticate. Я бачу приклади, як робити GetAll, GetOne, Post та Delete, але що робити, якщо я хочу додати додаткові методи до цих служб? Наприклад, мій UsersService повинен мати метод під назвою Authenticate, де вони передають ім'я користувача та пароль, однак це не працює.
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 / users /, і він зателефонує GetAll, і я можу перейти до myapi / api / users / 1, і він зателефонує Get, однак якщо я зателефоную myapi / api / users / authentication? Ім'я користувача = {0} & password = {1}, тоді він зателефонує Get (NOT Authenticate) та помилка:
Словник параметрів містить нульову запис для параметра "id" ненульового типу "System.Int32" для методу "System.String Get (Int32)" у "Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController". Необов’язковий параметр повинен бути еталонним типом, нульовим типом або оголошуватися як необов'язковий параметр.
Як я можу викликати імена спеціальних методів, такі як Authenticate?