我有一个 Dispatch MessageInspector,它正在反序列化包含在 SOAP 消息头中的 SAML 令牌。
为了进行反序列化,我使用了以下代码的变体:
List<SecurityToken> tokens = new List<SecurityToken>();
tokens.Add(new X509SecurityToken(CertificateUtility.GetCertificate()));
SecurityTokenResolver outOfBandTokenResolver = SecurityTokenResolver.CreateDefaultSecurityTokenResolver(new ReadOnlyCollection<SecurityToken>(tokens), true);
SecurityToken token = WSSecurityTokenSerializer.DefaultInstance.ReadToken(xr, outOfBandTokenResolver);
我看到的问题是 ReadToken 调用的性能取决于运行 Windows 服务的帐户(托管 WCF 服务的帐户)。
如果服务作为 Windows 域帐户运行,则 ReadToken 调用所用的时间几乎为零。当作为本地计算机帐户运行时,调用需要 200 到 1000 毫秒。
谁能解释这里发生了什么以及为什么运行这段代码的帐户对其性能有影响?
谢谢,
马丁