我最近选择了ASP.NET Web API的东西,虽然我已经破解了授权和身份验证,但我无法破解路由.这是一场噩梦!
我用AuthenticationController创建了一个Authenticate()方法.我将[HttpGet]属性添加到Authenticate(),但每当我点击API时,我得到404.
这是我目前的WebApiConfig: –
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute("DefaultApiWithId", "{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiWithAction", "{controller}/{action}");
config.Routes.MapHttpRoute("DefaultApiGet", "{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
config.Routes.MapHttpRoute("DefaultApiPost", "{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
}
我正在尝试的地址是:/ authentication.
控制器看起来像这样: –
[BasicHttpAuthorize(RequireAuthentication = true)]
public class AuthenticationController : ApiController
{
[HttpGet]
public string Authenticate(string email, string password, string agent, string ip)
{
}
}
任何人都可以指导我朝正确的方向发展吗?我试过点击多个地址/端点: –
> / authentication / authenticate
> / authentication /
> /身份验证
解决方法:
根据我的评论:
为什么你有4条路线?我不确定你要完全准确地实现什么,但你最有可能只用*(默认)路线来实现它.如果删除或注释掉最后3条路线并使用web api,则执行GET时应该触发Authenticate方法