Принять любой метод HTTP / глагол в ASP.NET WebAPI - PullRequest
1 голос
/ 04 апреля 2019

У меня есть действие над ApiController в проекте ASP.NET.

Я хочу, чтобы он принимал любой метод HTTP (даже поддельный, если это возможно).

Я могуне удается найти Не фильтровать по методу .Нужно ли создавать его?

Добавление нескольких атрибутов прекрасно работает для стандартных методов.Могу ли я поймать все, хотя?

NB Это приложение Framework 4.72, а не приложение Core

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Вы не можете полностью игнорировать фильтрацию по методу HTTP в Web API, фреймворк выглядит довольно строгим в этом вопросе.Но вы можете указать предопределенный набор любых имен методов, которые вам нужны (даже фиктивные), используя AcceptVerbs атрибут

[AcceptVerbs("POST", "GET", "MyMethod", "Bo-Gus")]
public IHttpActionResult MyAction()

Или вы можете реализовать IActionHttpMethodProvider, который возвращает разрешенные методы

[AttributeUsage(AttributeTargets.Method)]
public class AllowBogusMethodsAttribute : Attribute, IActionHttpMethodProvider
{
    public Collection<HttpMethod> HttpMethods
    {
        get
        {
            return new Collection<HttpMethod>
            {

                HttpMethod.Get,
                HttpMethod.Post,
                new HttpMethod("MyMethod"),
                new HttpMethod("Bo-Gus")
            };

        }
    }
}

и используйте его вот так

[AllowBogusMethods]
public IHttpActionResult MyAction()

Примечание

HttpMethods метод get будет вызываться только один раз за время существования приложения, и его результат будет кэшироваться, и поэтому выневозможно добавить новые разрешенные HTTP методы во время запросов и вернуть обновленную коллекцию.

0 голосов
/ 04 апреля 2019

Если вы не примените какой-либо глагол действия, то это действие будет рассматриваться как GET действие запроса.Это поведение по умолчанию.

Я никогда не пытался добавить HttpGet, HttpPost, Put и т. Д. К одному и тому же действию.

Альтернативным подходом было бы создание отдельных действий для разных httpглаголы, а затем перенаправить на одно действие с параметрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...