Stworzyłem podstawowy projekt webAPI (pusty projekt sieciowy z zaznaczonym webAPI) i dodałem do projektu owinowane pakiety nuget.Klasa middleware nie jest wywoływana na żądanie api
- Microsoft.AspNet.WebApi.Owin
- Microsoft.Owin.Host.SystemWeb
- Owin
Mam następnie stworzył klasę rejestrowania i podłączyć go poprzez starcie
using AppFunc = System.Func<System.Collections.Generic.IDictionary<string, object>, System.Threading.Tasks.Task>;
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
Debug.WriteLine("Startup Called");
var config = new HttpConfiguration();
WebApiConfig.Register(config);
appBuilder.UseWebApi(config);
appBuilder.Use(typeof(LoggingMiddleware));
}
}
public class LoggingMiddleware
{
private AppFunc Next { get; set; }
public LoggingMiddleware(AppFunc next)
{
Next = next;
}
public async Task Invoke(IDictionary<string, object> environment)
{
Debug.WriteLine("Begin Request");
await Next.Invoke(environment);
Debug.WriteLine("End Request");
}
}
Po uruchomieniu projektu i wyświetleniu strony domyślnej widzę wywołane żądania Początek/Koniec (dwukrotnie, tak jak to się dzieje, nie wiem, dlaczego t jest).
Jeśli jednak spróbuję wywołać trasę /api
(taką jak `/ api/ping/'), żądanie zakończy się pomyślnie, ale nie widzę stanów Żądanie rozpoczęcia/zakończenia w dzienniku.
Czego mi brakuje?
Uratowałem dzień !! : D –
> * które nie wydaje się wywoływać next.Invoke() * Uhhhh dlaczego nie? No dalej, microsoft ... –