2015-09-16 9 views
8

Ho creato un progetto webAPI di base (progetto Web vuoto con WebAPI controllato) e aggiunto i pacchetti owin nuget al progetto.Classe middleware non chiamata su richieste API

  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.Owin.Host.SystemWeb
  • Owin

Ho quindi creato una classe di registrazione, e agganciato in su tramite avvio

Quando eseguo il progetto e si apre la pagina di default, vedo le richieste di inizio/fine chiamate (due volte, come succede, non so perché t è).

Tuttavia, se provo a chiamare una route /api (come `/ api/ping/'), la richiesta viene completata correttamente, ma non vedo gli stati della richiesta Begin/End nel log.

Cosa mi manca con questo?

risposta

15

Owin esegue gli elementi middleware nell'ordine in cui sono registrati, terminando con la chiamata al controller (appBuilder.UseWebApi(config)) che non sembra chiamare next.Invoke(). Dato che il codice nella domanda ha la classe Logging Middleware registrata dopo la chiamata UseWebApi, questo non viene mai chiamato per le richieste API.

Modifica del codice a:

public class Startup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     //..... 

     //This must be registered first 
     appBuilder.Use(typeof(LoggingMiddleware)); 

     //Register this last 
     appBuilder.UseWebApi(config); 
    } 
} 

risolve il problema.

+0

Salvato il giorno !! : D –

+0

> * che non sembra chiamare next.Invoke() * Uhhhh perché no ?? Dai microsoft ... –