据我所知,Owin现在是一个可以定义处理传入请求的模块管道。任何模块都可以返回响应或将请求传递给下一个模块。这样就可以很容易地添加日志记录或身份验证等等,非常酷。
但是,如果我想记录回复怎么办?您是否可以创建一个针对每个响应运行的模块,无论响应来自管道中的哪个位置?如果有可能,您可以提供示例或链接,我似乎无法在网络上找到这种情况。
答案 0 :(得分:3)
证明它非常简单和合乎逻辑,This blogpost显示了如何为请求计时的示例。由于模块要么将请求传递给下一个模块,要么RETURNS响应,这只是将模块注册为第一个并使用ContinueWith处理返回值的问题:
public Task Invoke(IDictionary<string, object> environment)
{
return _next(environment).ContinueWith(result =>
{
Logger.LogResult(result);
return result;
});
}