मैं WCF वेब एपीआई से नए ASP.NET MVC 4 वेब एपीआई में परिवर्तित कर रहा हूं। मेरे पास एक UsersController है, और मैं एक विधि का नाम प्रमाणीकरण करना चाहता हूं। मैं GetAll, GetOne, Post, और Delete कैसे करें का उदाहरण देखता हूं, हालांकि क्या होगा अगर मैं इन सेवाओं में अतिरिक्त तरीके जोड़ना चाहता हूं? उदाहरण के लिए, मेरे उपयोगकर्ता सेवा में एक विधि होनी चाहिए जिसे प्रमाणीकरण कहा जाता है जहां वे एक उपयोगकर्ता नाम और पासवर्ड में पास होते हैं, हालांकि यह काम नहीं करता है।
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 / प्रमाणिकता कहता हूं? उपयोगकर्ता नाम = {0} & पासवर्ड = {1} तब इसे गेट (नहीं प्रमाणीकरण) और त्रुटि कहेंगे:
पैरामीटर डिक्शनरी में नॉन-न्युलेबल टाइप 'System.Int32' के पैरामीटर 'id' के लिए 'नोवल एंट्री.सर्विस.CF.NavtrakAPI .Controllers.UsersController' का एक नॉर्थ एंट्री होता है। एक वैकल्पिक पैरामीटर एक संदर्भ प्रकार, एक अशक्त प्रकार होना चाहिए, या एक वैकल्पिक पैरामीटर के रूप में घोषित किया जाना चाहिए।
मैं कस्टम विधि नाम जैसे प्रमाणीकरण कैसे कह सकता हूं?