Minha rota está configurada corretamente e meus métodos têm a etiqueta decorada. Ainda recebo a mensagem "O recurso solicitado não oferece suporte ao método 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";
}
Aqui estão minhas rotas:
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 }
);
c#
routing
asp.net-web-api
Rushino
fonte
fonte
apenas use este atributo
não precisa desta linha de código:
fonte
No meu caso, a assinatura da rota era diferente do parâmetro do método. Eu tinha id, mas estava aceitando documentId como parâmetro, que causava o problema.
fonte
Eu estava tendo o mesmo problema .. Eu já tinha 4 controladores funcionando bem, mas quando adicionei este ele retornou "O recurso solicitado não suporta o método HTTP 'GET'". Tentei de tudo aqui e em alguns outros artigos relevantes, mas fiquei indiferente à solução, pois, como Dan B. mencionou em resposta à resposta, eu já tinha outros funcionando bem.
Afastei-me por um tempo, voltei e imediatamente percebi que quando adicionei o controlador, ele estava aninhado na classe "Controller" e não na classe "ApiController" sob a qual meus outros controladores estavam. Suponho que escolhi a opção de scaffolding errada para criar o arquivo .cs no Visual Studio. Então, incluí o namespace System.Web.Http, alterei a classe pai e tudo funciona sem os atributos adicionais ou roteamento.
fonte