我们正在研究调用的网络服务的一些性能问题。 我已经设法在整个实际的 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;
}
我已经尝试过,将方法放在返回的类中,这些方法用 [OnSerializing()] 和 [OnSerialized()] 属性装饰,但这不起作用。我还尝试通过使用 try..finally block 来捕获方法中的时间,但不认为这也记录了实际的序列化时间吗?
有人建议我可能必须实现自己的序列化器(它会简单地记录时间,然后无论如何调用默认序列化器),但我只是想知道这是否是我唯一的选择?
非常感谢任何想法。
最佳答案
你可以使用 Custom SoapExtension .在ProcessMessage()方法中,可以看到4个事件,序列化前后和反序列化前后。在 Befores 开始秒表,在 Afters 结束,然后将时间存储在某个地方。
关于c# - 是否可以记录序列化从 Web 服务返回的对象所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386974/