作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试创建一个基于 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/
我正在尝试创建一个基于 ServiceStack 的插件 IPlugin可以测量操作所用时间并将其发布到仪表板的界面。代码本身会非常简单,我尝试根据 Request Logger 上的一些概念来完成它
我需要根据传入请求中 HTTP header 的值来解析我的服务的依赖关系。 我试过像这样注册一个工厂方法: container.Register(c => GetDependencyForReque
我是一名优秀的程序员,十分优秀!