Middleware-Klasse wurde bei API-Anforderungen nicht aufgerufen

8

Ich habe ein grundlegendes webAPI-Projekt erstellt (leeres Webprojekt mit Überprüfung der webAPI) und die owin nuget-Pakete dem Projekt hinzugefügt.

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

Ich habe dann eine Logging-Klasse erstellt und sie über den Start verbunden

%Vor%

Wenn ich das Projekt starte und die Standardseite geöffnet wird, sehe ich die Anfangs- / Ende-Anforderungen aufgerufen (zweimal, wie es passiert, nicht sicher, warum das ist).

Wenn ich jedoch versuche, eine /api route (wie '/ api / ping /') aufzurufen, wird die Anfrage erfolgreich abgeschlossen, aber ich sehe die Begin / End-Anforderungsstatus nicht im Protokoll.

Was vermisse ich damit?

    
Obsidian Phoenix 16.09.2015, 10:10
quelle

1 Antwort

15

Owin führt die Middleware-Elemente in der Reihenfolge aus, in der sie registriert sind, und endet mit dem Aufruf des Controllers ( appBuilder.UseWebApi(config) ), der anscheinend nicht next.Invoke() aufruft. Da der Code in der Frage die Logging Middleware-Klasse nach dem Aufruf UseWebApi registriert hat, wird er nie für API-Anfragen aufgerufen.

Ändern des Codes zu:

%Vor%

behebt das Problem.

    
Obsidian Phoenix 16.09.2015, 13:44
quelle

Tags und Links