我有一个调用授权管理器 (AzMan) API 的 WCF 服务 - 这是一个 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();
}
这段代码大部分时间都可以正常工作。但是,在进行负载测试时(始终使用相同的 userSID),此代码有时会为角色列表返回一个空数组。AzMan 是否有负载过重的问题,或者我对 AzMan COM 对象的 regaurd 有什么不对的地方吗?