所请求的资源不支持HTTP方法“GET” [英] The requested resource does not support HTTP method 'GET'

查看:10129
本文介绍了所请求的资源不支持HTTP方法“GET”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的路线是正确配置,我的方法有装饰标记。我仍然获得请求的资源不支持HTTP方法GET的消息?

  [System.Web.Mvc.AcceptVerbs(GET,POST)]
[System.Web.Mvc.HttpGet]
公共字符串验证(用户名字符串,字符串密码)
{
  //DécodeR莱参数应用reçue。
  串德codedUsername = username.De codeFromBase64();
  串德codedPassword = password.De codeFromBase64();  回到价值;
}

下面是我的路线:

  config.Routes.MapHttpRoute(
    名称:AuthentificateRoute
    routeTemplate:API /游戏/ authentificate; {用户名} {}密码,
    默认:新{控制器=游戏,
                    行动=验证,
                    用户名= RouteParameter.Optional,
                    密码= RouteParameter.Optional},
    限制:新{列举HTTPMethod =新HttpMethodConstraint(HttpMethod.Get)}
);config.Routes.MapHttpRoute(
    名称:DefaultApi
    routeTemplate:API / {}控制器/(编号),
    默认:新{控制器=家,ID = RouteParameter.Optional}
);


解决方案

请从System.Web程序使用的属性的 HTTP 您的WebAPI行动命名空间:

  [System.Web.Http.AcceptVerbs(GET,POST)]
    [System.Web.Http.HttpGet]
    公共字符串验证(用户名字符串,字符串密码)
    {...}

为什么它不工作的原因是因为你使用的是从 MVC 空间 System.Web.Mvc 属性。在 System.Web.Http 命名空间中的类对于的WebAPI

My route is correctly configured, and my methods have the decorated tag. I still get "The requested resource does not support HTTP method 'GET'" message?

[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";
}

Here are my routes:

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 }
);

解决方案

Please use the attributes from the System.Web.Http namespace on your WebAPI actions:

    [System.Web.Http.AcceptVerbs("GET", "POST")]
    [System.Web.Http.HttpGet]
    public string Auth(string username, string password)
    {...}

The reason why it doesn't work is because you were using the attributes that are from the MVC namespace System.Web.Mvc. The classes in the System.Web.Http namespace are for WebAPI.

这篇关于所请求的资源不支持HTTP方法“GET”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆