4

据我了解 Owin 现在它是一个模块管道,您可以定义它来处理传入的请求。任何模块都可以返回响应或将请求传递给下一个模块。这样就可以很容易地添加日志记录或身份验证或诸如此类的东西,非常酷。

但是,如果我想记录响应怎么办?您能否创建一个针对每个响应运行的模块,而不管响应来自管道中的何处?如果可能的话,您能否提供一个示例或链接,我似乎无法在网上找到这种情况。

4

1 回答 1

3

事实证明它非常简单和合乎逻辑,这篇博文展示了一个关于如何为请求计时的示例。由于一个模块要么将请求传递给下一个模块,要么返回一个响应,因此只需将模块注册为第一个模块并使用 ContinueWith 处理返回值:

public Task Invoke(IDictionary<string, object> environment)
{
    return _next(environment).ContinueWith(result =>
    {
        Logger.LogResult(result);
        return result;
    });
}
于 2013-07-08T05:29:39.530 回答