Je suis à la conversion à partir de la WCF API Web pour la nouvelle ASP.NET MVC 4 Web API. J'ai un UsersController, et je veux avoir une méthode nommée Authentifier. - Je voir des exemples de la façon de faire GetAll, GetOne, Post et Delete, cependant, que faire si je veux ajouter des méthodes supplémentaires pour ces services? Par exemple, mon UsersService doit avoir une méthode appelée Authentifier où ils passent dans un nom d'utilisateur et mot de passe mais cela ne fonctionne pas.
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");
}
}
Je peux parcourir pour myapi/api/utilisateurs/ et il va appeler GetAll et je peux parcourir pour myapi/api/users/1 et appellera à Obtenir, cependant si je l'appelle myapi/api/utilisateurs/authentifier?nom d'utilisateur={0} et mot de passe={1}, puis il va appeler Obtenir (ne PAS s'Authentifier) et de l'erreur:
Le dictionnaire de paramètres contient une valeur null pour le paramètre " id "de la non-type nullable "Système".Int32 "pour la méthode" du Système.String Get(Int32)' dans 'Navtrak.Services.WCF.NavtrakAPI.Les contrôleurs.UsersController'. Un paramètre facultatif doit être un type de référence, un type nullable, ou être déclaré comme un paramètre facultatif.
Comment puis-je appeler méthode personnalisée des noms tels que Authentifier?