我正在尝试创建一个基于ServiceStack IPlugin接口的插件,该接口可以测量操作所用的时间并将其发布到仪表板.代码本身非常简单,我尝试根据Request Logger上的一些概念来实现.
此记录器使用在默认ServiceRunner类中添加的StopWatch,但它仅在配置请求记录器时执行.
我已经有一个自定义的ServiceRunner并且StopWatch正在那里初始化,但是使用这种方法并不是最佳的,因为插件不是自包含的.
我现在最大的问题是我显然无法访问IRequestContext.插件是否有任何方式可以访问此上下文或任何其他方式来测量在简单插件中运行请求的时间,而不依赖于ServiceRunner?
谢谢!
我目前在我们的一个项目上使用dapper,我们一直在执行存储过程。在前几种方法中,当我们执行的存储过程返回行时,一切工作都很好。
现在,当我尝试从存储过程中获取数据时发现一个问题,该存储过程返回信息。这是一个非常常见的用例(例如,在应用程序上登录用户)。当调用该Query方法时,并且sproc不返回任何行时,dapper会引发ArgumentException以下消息:
“使用多重映射API时,如果您具有Id参数名称之外的其他键,请确保设置splitOn参数:splitOn”
我使用的代码是:
using (var conn = new SqlConnection(connString))
{
conn.Open();
return conn.Query<Customer>(
sql: "prc_GetCustomer",
param: new { Parameter = p },
commandType: CommandType.StoredProcedure).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
我知道Execute当该过程不返回任何行但实际上不是我的情况时,应该使用一种方法。另外,dapper异常会引起误解,因为我没有使用多重映射。
有任何想法吗?谢谢!