Как исключить глаголы в ASP.NET Core API?

Мне нужно исключить глаголы, разрешенные для решения API, но я не могу найти примеры, как это сделать в web.config.

Я нашел пример для MVC выглядит так:

<configuration>
 <system.web>
  <httpHandlers>
   <remove verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/>
   <add verb="*" path="MyPage.aspx" type="MySpecialHandler, MyAssembly"/>
  </httpHandlers>
 </system.web>
</configuration>

Это то, как я должен сделать это и для API?

Если да, то что мне поставить вместо path?


person Friso    schedule 05.10.2017    source источник


Ответы (1)


В ASP.NET Core реализация обработчиков и модулей HTTP заменена ПО промежуточного слоя. В этой статье достаточно информации о том, как перейти с обработчиков и модулей HTTP на ПО промежуточного слоя ASP.NET Core. https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules

Чтобы добиться исключения глаголов HTTP из вашего API, вы можете написать простое промежуточное ПО, подобное этому:

public class VerbsMiddleware{

        private readonly RequestDelegate _next;
        private string[] VerbsToExclude = {"DELETE", "PUT"}; //You can put these in appsettings.json

        public VerbsMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task Invoke(HttpContext context){

            if (VerbsToExclude.Contains(context.Request.Method))
            {
                context.Response.StatusCode = 405;
                await context.Response.WriteAsync("Method Not Allowed");
            }

            await _next.Invoke(context);
        }

    }

С помощью вышеуказанного промежуточного программного обеспечения ваш API возвращает код состояния 405 для любых запросов HttpDelete и HttpPut.

person Yared    schedule 06.10.2017
comment
Спасибо @Yared. Мое единственное предложение - изменить его с VerbsToExclude на VerbsToInclude и отменить оператор if. Таким образом вы указываете те, с которыми, как вы знаете, вы работаете, а все остальное блокируется. - person IeuanW; 10.08.2020
comment
как исключить глаголы в файле appsetting.json? - person Saad Awan; 11.11.2020