2017-10-05 9 views
1

Je dois exclure les verbes autorisés pour une solution d'API, mais je ne trouve pas d'exemples comment le faire en web.config.Comment exclure les verbes dans ASP.NET Core API?

Je n'ai trouvé an example for MVC qui ressemble à ceci:

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

Est-ce que je dois le faire pour une API ainsi?

Si oui, que dois-je mettre à la place de path?

Répondre

2

Dans ASP.NET Core, l'implémentation des gestionnaires HTTP et des modules est remplacée par Middleware. Cet article contient suffisamment d'informations sur la migration des gestionnaires et des modules HTTP vers le middleware ASP.NET Core. https://docs.microsoft.com/en-us/aspnet/core/migration/http-modules

Afin d'obtenir l'exclusion des verbes HTTP à partir de votre API, vous pouvez écrire un middleware simple comme ceci:

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

    } 

Avec le middleware ci-dessus, vous API renvoie le code d'état de 405 pour tout HttpDelete et HttpPut demandes