WCF 웹 API에서 새로운 ASP.NET MVC 4 웹 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)'에 대해 널 입력이 불가능한 유형 'System.Int32'의 매개 변수 'id'에 대한 널 항목이 있습니다. 선택적 매개 변수는 참조 유형이거나 널 입력 가능 유형이거나 선택적 매개 변수로 선언되어야합니다.
Authenticate와 같은 사용자 지정 메서드 이름을 어떻게 호출 할 수 있습니까?