我正在尝试为WCF服务方法测量呼叫持续时间性能计数器。
我有一个非常简单的WCF服务,如下所示。
服务界面:
[ServiceContract]
public interface IFooService
{
[OperationContract]
string DoSomeExpensiveOperation();
}
服务实施:
public class FooService : IFooService
{
public string DoSomeExpensiveOperation()
{
Thread.Sleep(3000);
return "Some valuable information";
}
}
当实现是同步的时(如上所述),我可以看到填充的呼叫持续时间。
但是,当服务实现是异步的时(如下所示),不会填充任何内容。
服务界面:
[ServiceContract]
public interface IFooService
{
[OperationContract]
Task<string> DoSomeExpensiveOperation();
}
服务实施:
public class FooService : IFooService
{
public async Task<string> DoSomeExpensiveOperation()
{
Thread.Sleep(3000);
return await Task.FromResult("Some expensive value");
}
}
我甚至尝试在等待之后发布自定义性能计数器。即使这样也行不通。
感谢是否有人可以对此有所了解。
谢谢!
答案 0 :(得分:0)