ฉันกำลังแปลงจาก 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 (NOT Authenticate) และ error:
พจนานุกรมพารามิเตอร์มีรายการ null สำหรับพารามิเตอร์ 'id' ของประเภทที่ไม่เป็นโมฆะ 'System.Int32' สำหรับเมธอด 'System.String Get (Int32)' ใน 'Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController' พารามิเตอร์ที่เป็นทางเลือกต้องเป็นประเภทการอ้างอิงประเภทที่เป็นโมฆะหรือถูกประกาศเป็นพารามิเตอร์ทางเลือก
ฉันจะเรียกชื่อเมธอดแบบกำหนดเองเช่น Authenticate ได้อย่างไร?