Rus*_*ino 98 c# routing asp.net-web-api
我的路线配置正确,我的方法有装饰标签.我仍然得到"请求的资源不支持HTTP方法'GET'"消息?
[System.Web.Mvc.AcceptVerbs("GET", "POST")]
[System.Web.Mvc.HttpGet]
public string Auth(string username, string password)
{
// Décoder les paramètres reçue.
string decodedUsername = username.DecodeFromBase64();
string decodedPassword = password.DecodeFromBase64();
return "value";
}
Run Code Online (Sandbox Code Playgroud)
这是我的路线:
config.Routes.MapHttpRoute(
name: "AuthentificateRoute",
routeTemplate: "api/game/authentificate;{username};{password}",
defaults: new { controller = "Game",
action = "Auth",
username = RouteParameter.Optional,
password = RouteParameter.Optional },
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Home", id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
Mag*_*ing 219
请使用System.Web中的属性.WebAPI操作上的Http名称空间:
[System.Web.Http.AcceptVerbs("GET", "POST")]
[System.Web.Http.HttpGet]
public string Auth(string username, string password)
{...}
Run Code Online (Sandbox Code Playgroud)
它不起作用的原因是因为您使用的是MVC命名空间中 的属性System.Web.Mvc.System.Web.Http命名空间中的类用于WebAPI.
小智 7
就我而言,路由签名与方法参数不同。我有 id,但我接受 documentId 作为参数,这导致了问题。
[Route("Documents/{id}")] <--- caused the webapi error
[Route("Documents/{documentId}")] <-- solved
public Document Get(string documentId)
{
..
}
Run Code Online (Sandbox Code Playgroud)