У меня есть Dispatch MessageInspector, который десериализует токен SAML, содержащийся в заголовке сообщения SOAP.
Для выполнения десериализации я использую вариант следующего кода:
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 миллисекунд.
Может кто-нибудь пролить свет на то, что здесь происходит, и почему учетная запись, выполняющая этот бит кода, влияет на его производительность?
Спасибо,
Мартин