1. ホーム
  2. c#

[解決済み] 要求されたリソースは HTTP メソッド 'GET' をサポートしていません。

2022-02-17 04:47:15

質問

私のルートは正しく設定され、私のメソッドはdecoratedタグを持っています。 それでも、「要求されたリソースは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";
}

以下は私のルートです。

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

解決方法は?

System.Web.Systemの属性を使用してください。 Http 名前空間を使用します。

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

うまくいかない理由は、あなたが使っていた属性が MVC 名前空間 System.Web.Mvc . のクラスは System.Web.Http 名前空間は ウェブAPI .