大佬教程收集整理的这篇文章主要介绍了ASP.NET Web API中的自定义方法名称,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
默认情况下,路由配置遵循RESTFul约定,这意味着它将仅接受Get,Post,Put和delete操作名称(默认情况下,请查看global.asax
=>中的路由,不允许您指定任何操作名称=>它使用http动词进行分派)。因此,当您向GET请求发送消息时,/API/users/authenticate
您基本上是在调用该Get(int
ID)
操作并传递ID=authenticate
,这显然会崩溃,因为您的Get操作需要一个整数。
如果您希望使用与标准名称不同的动作名称,则可以在global.asax
以下位置修改路径定义:
Routes.MaphttpRoute(
name: "DefaultAPI",
routeTemplate: "API/{Controller}/{action}/{ID}",
defaults: new { action = "get", ID = RouteParameter.optional }
);
现在,您可以导航到/API/values/getauthenticate
以验证用户身份。
我正在从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(不进行身份验证)并报错:
如何调用自定义方法名称,例如Authenticate?
以上是大佬教程为你收集整理的ASP.NET Web API中的自定义方法名称全部内容,希望文章能够帮你解决ASP.NET Web API中的自定义方法名称所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。