Мой маршрут настроен правильно, а мои методы имеют украшенный тег. Я по-прежнему получаю сообщение «Запрошенный ресурс не поддерживает 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 }
);
c#
routing
asp.net-web-api
Рушино
источник
источник
просто используйте этот атрибут
не нужна эта строка кода:
источник
В моем случае подпись маршрута отличалась от параметра метода. У меня был идентификатор, но я принимал documentId в качестве параметра, что вызывало проблему.
источник
У меня была та же проблема ... У меня уже было 4 контроллера, которые работают и работают нормально, но когда я добавил этот, он вернул: «Запрошенный ресурс не поддерживает HTTP-метод 'GET'». Я пробовал все здесь и в паре других соответствующих статей, но был безразличен к решению, поскольку, как сказал Дэн Б. в ответ на ответ, у меня уже были другие, работающие нормально.
Я ушел на некоторое время, вернулся и сразу понял, что когда я добавил Контроллер, он был вложен в класс «Контроллер», а не в класс «ApiController», под которым находились другие мои Контроллеры. Я предполагаю, что выбрал неправильный вариант построения шаблонов для создания файла .cs в Visual Studio. Поэтому я включил пространство имен System.Web.Http, изменил родительский класс, и все работает без дополнительных атрибутов или маршрутизации.
источник
Решил эту проблему, используя
http(s)
при доступе к конечной точке. Маршрут, по которому я выходил, был недоступенhttp
. Поэтому я бы сказал, проверьте протоколы, для которых доступен маршрут.источник