我们在 .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 仍然有文件的句柄?)。
我怎样才能让授权商店在每次通话时刷新自己?
谢谢!