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などのカスタムメソッド名を呼び出すにはどうすればよいですか?