У меня есть служба WCF, которая вызывает API диспетчера авторизации (AzMan), который является интерфейсом COM. Я использую следующий код, чтобы получить список ролей для данной учетной записи пользователя:
public string[] GetRoleNamesForUser(string appName, SecurityIdentifier userSID)
{
m_azManStore.UpdateCache(null);
IAzApplication app = GetApplication(appName);
List<string> userRoles = new List<string>();
if (userSID != null)
{
IAzClientContext context = app.InitializeClientContextFromStringSid(userSID.ToString(), 1, null);
object[] roles = (object[])context.GetRoles("");
foreach (string uRole in roles)
{
userRoles.Add(uRole);
}
Marshal.FinalReleaseComObject(context);
}
return userRoles.ToArray();
}
Этот код работает нормально большую часть времени. Однако при нагрузочном тестировании (всегда с одним и тем же идентификатором пользователя) этот код иногда возвращает пустой массив для списка ролей. Есть ли у AzMan проблема с большой нагрузкой или я что-то не так делаю с regaurd для COM-объекта AzMan или что-то в этом роде?