Récemment, dans un projet, un collègue a eu un problème sur une middleware OWIN. Il arrivait à capturer le message lors de la requête mais impossible d’avoir quelques choses au niveau de la réponse.
Cela venait du fait que les Web Api n’étaient pas déclarer avec le system OWIN. A cause de cela, le middelware était bien appelé dans le pipeline de requête mais il semblerait qu’il n’était pas bien situé par rapport au middleware WebApi. (l’article ici explique comment sont intégrés les middleware OWIN dans le pipeline intégré de IIS)
Nous avions :
au lieu de :
Pour se placer complètement dans le mode OWIN il faut faire de la manière suivante :
Tout d’abord, rajouter une fichier (Startup.WebApi) de classe dans le répertoire App_Start :
avec le corps suivant :
public partial class Startup { private void ConfigureApi(IAppBuilder app) { var config = new HttpConfiguration(); WebApiConfig.Register(config); app.UseWebApi(config); } }
Ensuite dans le fichier Global.asax, commenter ou supprimer la ligne :
GlobalConfiguration.Configure(WebApiConfig.Register);
Enfin dans le fichier Startup.cs à la racine de votre projet, changer la méthode Configure pour qu’elle initialise les Api:
public void Configuration(IAppBuilder app) { ConfigureAuth(app); ConfigureApi(app); }
voila à partir de maintenant vous pouvez utiliser app.use() au bon niveau dans votre pipeline Owin pour insérer de nouveaux middlewares.
Pingback: Azure Event Hub & Stream Analytics–Part 1 : publier des évènements | Jérémie – an other BizTalker