首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AzMan接口高负载返回无效数据

AzMan接口高负载返回无效数据
EN

Stack Overflow用户
提问于 2010-12-29 07:41:33
回答 1查看 253关注 0票数 0

我有一个调用授权管理器(AzMan) API的WCF服务--这是一个COM接口。我使用以下代码来获取给定用户帐户的角色列表:

代码语言:javascript
复制
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有什么不正确的地方?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-25 07:15:52

使用AzMan COM对象时,必须使用Marshal.FinalReleaseCOMObject(object)释放资源。如果不这样做,可能会发生内存泄漏。我必须将AzMan存储包装在一个可处理类中,这样每次调用都会打开AzMan,使用它,然后关闭它。结果是一个更慢,但更稳定的应用程序。

有关更多详细信息,请查看此SO question

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4550416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档