WCF Web API から新しい ASP.NET MVC 4 Web API に変換しています。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/authenticate?username={0} を呼び出すと&password={1} の場合、Get (認証ではなく) が呼び出され、エラーが発生します。
パラメーター ディクショナリには、'Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController' のメソッド 'System.String Get(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。
Authenticate などのカスタム メソッド名を呼び出すにはどうすればよいですか?