请求的资源不支持HTTP方法'GET'

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.

  • 该死的...谢谢!我即将变得疯狂lol令人难以置信你怎么可以浪费时间在这些小事上.. (11认同)
  • 为什么我只需要在我的10个apis中为此项目执行此操作?我用与其他9 api完全相同的方式创建了api.多么令人沮丧. (8认同)
  • 编辑回答解释. (6认同)
  • 我可以在RouteConfig.cs中指定[System.Web.Http.AcceptVerbs("GET","POST")]和[System.Web.Http.HttpGet],这样我就不需要在每个API中添加它. (2认同)

小智 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)


Mar*_*103 5

http(s)通过在访问端点时使用解决了此问题。我访问的路线在 上不可用http。所以我想说验证路由可用的协议。