0

我们在 .NET 中编写了一个简单的 AzMan 包装类,它使用 AZROLESLib COM 互操作库来访问 AzMan。

一切正常,除了当我们对底层 XML 存储进行更改时,这些更改不会反映在对 AZROLESLib 的后续调用中。

我们的代码看起来像这样:

在类级别,我们存储对授权存储的引用:

IAzAuthorizationStore AuthorisationStore = new AzAuthorizationStoreClass();

在我们的类的构建过程中,我们初始化存储:

AuthorisationStore.Initialize(0, XML_STORE_PATH)

每当我们请求角色时,都会执行以下代码:

AuthorisationStore.UpdateCache();
var application = AuthorisationStore.OpenApplication(APPNAME);
// we do a query here and return the results

但是,对 UpdateCache 的调用似乎什么也没做。我在每次调用后都尝试使用 CloseApplication,但它只是抛出一个异常:“不支持请求。(来自 HRESULT 的异常:0x80070032)”。如果我在每次调用时都新建一个 AuthorisationStore,我会得到一个 Access Denied 异常(我假设是因为旧的 Authorization Store 仍然有文件的句柄?)。

我怎样才能让授权商店在每次通话时刷新自己?

谢谢!

4

1 回答 1

0

我正在关闭它,因为我注意到它现在神秘地起作用了;呼吁

AuthorisationStore.UpdateCache();

是关键之一。我不知道为什么它以前不起作用,但它一定是我做错了什么......

于 2011-03-07T10:20:42.900 回答