我们正在查看我们正在调用的Web服务的一些性能问题。我设法在整个实际的网络服务方法本身中放置了时间记录代码,但是现在看来,序列化结果集所需的实际时间可能是一个问题吗?

因此,我希望记录将这些数据序列序列化的时间,但是正在努力获得任何结果。

这是我们拥有的示例Web服务方法:

[AuthExtension]
[WebMethod]
[SoapHeader("AuthHeader", Direction = SoapHeaderDirection.In)]
public ResultSet CheckAvailability(FareSelections fareSelections)
{
    ResultSet results = null;
    results = Logic.CheckAvailability(fareSelections, AuthHeader.Token, timeLogger);
    return results;
}

我尝试过,将方法放在返回的班级中,这些方法被[onserialization()]和[onserialized()]属性装饰,但这不起作用。我还试图通过尝试使用试验来捕获该方法中的时间。

有人建议我可能必须实现自己的序列化器(这只会录制时间,然后致电默认序列化器),但是只是想知道这是否是我唯一的选择?

任何想法都非常感谢。

有帮助吗?

解决方案

您可以使用 自定义soapextension. 。在ProcessMessage()方法中,您可以在序列化之前和之后看到4个事件,并在避难所化之前和之后。在Befores中启动秒表,在后面结束,然后将时间存储在某个地方。

其他提示

绕电话扭曲 跑表 目的

从记忆里:

  Stopwatch sw = Stopwatch.Startnew();
  //stuff
  sw.Stop();
  print sw.ElapsedMilliseconds();

您能否使用服务跟踪查看器检查每个请求的时间多长时间?

你应该使用类似的东西 蚂蚁分析师 (评估版本会做)介绍有关这些方法的内容。它将为您提供一个很好的见解。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top