2013-07-05 9 views
5

Wie ich jetzt Owin verstehe, ist es eine Pipeline von Modulen, die Sie definieren können, die eingehende Anforderungen behandelt. Jedes Modul kann eine Antwort zurückgeben oder die Anfrage an das nächste Modul weiterleiten. Das macht es sehr einfach, Protokollierung oder Authentifizierung hinzuzufügen, oder was auch immer, sehr cool.Kann Owin auch Antworten in seiner Pipeline behandeln

Aber was, wenn ich Antworten protokollieren möchte? Können Sie ein Modul erstellen, das für jede Antwort ausgeführt wird, unabhängig davon, woher die Antwort in der Pipeline kam? Wenn es möglich ist, können Sie ein Beispiel oder einen Link angeben, ich kann nicht scheinen, dieses Szenario im Web zu finden.

Antwort

3

Es stellt sich heraus, es ist ziemlich einfach und logisch, This blogpost zeigt ein Beispiel, wie Sie die Anfrage Zeit. Da ein Modul entweder die Anfrage an das nächste Modul weitergibt oder eine Antwort zurücksendet, ist es nur eine Frage, ein Modul als erstes zu registrieren und den Rückgabewert mit ContinueWith zu verarbeiten:

public Task Invoke(IDictionary<string, object> environment) 
{ 
    return _next(environment).ContinueWith(result => 
    { 
     Logger.LogResult(result); 
     return result; 
    }); 
}