gpt4 book ai didi

c# - 在 ServiceStack 的插件上访问 IRequestContext

转载 作者:太空狗 更新时间:2023-10-29 19:47:03 24 4
gpt4 key购买 nike

我正在尝试创建一个基于 ServiceStack 的插件 IPlugin可以测量操作所用时间并将其发布到仪表板的界面。代码本身会非常简单,我尝试根据 Request Logger 上的一些概念来完成它.

此记录器使用 StopWatch这是在默认 ServiceRunner 类中添加的,但它仅在配置请求记录器时才执行。

我已经有一个自定义的 ServiceRunner 并且 StopWatch 正在那里初始化,但是使用这种方法并不是最佳的,因为插件不是独立的。

我现在最大的问题是我显然无法访问 IRequestContext。插件是否可以通过任何方式访问此上下文或任何其他方式来测量在简单插件内运行请求的时间,而不依赖于 ServiceRunner?

谢谢!

最佳答案

将请求的开始时间存储在 RequestFilter 中,然后在 ResponseFilter 中使用当前时间减去开始时间计算时间?

这也可以在插件中完成。

这是一些伪代码...

appHost.RequestFilters.Add( ( req, res, obj ) =>
{
if(!req.Items.ContainsKey( "begin-time" ) )
req.Items.Add( "begin-time", DateTime.Now );
else
req.Items[ "begin-time" ] = DateTime.Now;
}
);

appHost.ResponseFilters.Add( ( req, res, i ) =>
{
var beginTime = (DateTime)req.Items[ "begin-time" ];

var elapsed = DateTime.Now - beginTime;
}
);

关于c# - 在 ServiceStack 的插件上访问 IRequestContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com