COM 인터페이스 인 Authorization manager (AzMan) API를 호출하는 WCF 서비스가 있습니다. 다음 코드를 사용하여 주어진 사용자 계정에 대한 역할 목록을 얻습니다.AzMan API가로드가 많은 잘못된 데이터를 반환합니다.
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를 사용하지 않는 것이 있습니까?