Мы написали простой класс-оболочку AzMan в .NET, который использует библиотеку взаимодействия COM AZROLESLib для доступа к 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 при каждом вызове, вместо этого я получаю исключение «Отказано в доступе» (я полагаю, потому что старое хранилище авторизации все еще имеет дескриптор файла?).
Как я могу заставить хранилище авторизации обновляться при каждом вызове?
Спасибо!