AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 18.10.2012, 19:32   #41  
someOne ist offline
someOne
Участник
Benutzerbild von someOne
 
174 / 432 (15) +++++++
Registriert seit: 11.12.2008
Ort: Москва
Zitat:
Zitat von Bega Beitrag anzeigen
Никто не сталкивался с такой проблемой?: очищаем кэш, пользователь закрывает приложение, запускает снова и получает ошибку:
Anhang 6628
Чаще всего это происходит на Windows 7 но также бывает и на XP. Опытным путем выяснили, что ошибка возникает после SysFlushAOD::main(null), а именно после SysFlushAOD::doFlush() внутри main().

Лечится это только ручным удалением кэша с диска. Версия DAX2009 SP1 RU6.
Проблема решается очисткой файлового кеша пользователя, у которого производилась очистка кеш-а приложения при следующем старте Клиента Аксапта.

При этом если очистка кеш-а приложения происходит при старте клиента и вместе с этим удаляется и файловый кеш - при следующем старте клиента Аксапта ошибки не будет.

Если Очистка кеш-а приложения произошла во уже во время работы - то при следующем старте клиента Аксапта ошибка появится, и клиент все же "свалится", но при повторном запуске все запустится без проблем!

Предлагаю такое решение.

1. в методе очистки кеш-а приложения пользователю устанавливать некий флаг, который сохранит в БД информацию о том что при следующем старте клиента для данного пользователя требуется очистка файлового кеш-а,
пример псевдокода
X++:
static client void refreshApplication()
{
    ;
    global::setFlagUserClearFileCache(true); // Установить Флаг

    xSession::removeAOC();
    SysTreeNode::refreshAll();
    SysFlushDictionary::main(null);
    SysFlushAOD::main(null);
    SysFlushData::main(null);
    xSession::updateAOC();

    global::deleteLocalCacheFiles(); // Удалить файловый кеш
}
2. В методе Application.startupPost() произвети проверку флага пользователя и очистку файлового кеш-а при необходимости
X++:
void startupPost()
{
    ;
    if (clientKind() == ClientType::Client)
    {
        if (global::setFlagUserClearFileCache() == true)
        {
            global::deleteLocalCacheFiles(); // Удалить файловый кеш
            global::setFlagUserClearFileCache(false); // Сбросить флаг
        }

          ...
Пример кода метода deleteLocalCacheFiles :
X++:
static client void deleteLocalCacheFiles()
{
    str path;
    ;
    path = global::getPathLocalApplicationData();

    WinApi::shellExecute('cmd', '/c DEL "' + path + '*.kti" /q', '', 'Open', 0);
    WinApi::shellExecute('cmd', '/c DEL "' + path + '*.dat" /q', '', 'Open', 0);
    WinApi::shellExecute('cmd', '/c DEL "' + path + '*.auc" /q', '', 'Open', 0);
}
В нем в свою очередь используется другой метод getPathLocalApplicationData
X++:
static client str getPathLocalApplicationData()
{
    // опрделить местоположение папки
    // c:\Documents and Settings\***user***\Local Settings\Application Data\ для XP server 2003 и т.д.
    // c:\Users\***user***\AppData\Local\ для windows 7, server 2008 и т.д.

    #define.Environment_SpecialFolder_LocalApplicationData(28)

    str                             ret;

    System.Type                     type;
    System.Reflection.MethodInfo    methodGetFolderPath;
    System.Object[]                 params;
    ;
    type = System.Type::GetType("System.Environment");

    methodGetFolderPath = type.GetMethod("GetFolderPath");

    params =  new System.Object[1]();

    params.SetValue(#Environment_SpecialFolder_LocalApplicationData, 0);

    ret = methodGetFolderPath.Invoke(ClrInterop::Null("System.Object"), params);

    ret += "\\";

    return ret;
}
Код метода global::setFlagUserClearFileCache приводить не буду - там возможно множество разных способов реализации - главная идея - сохранить, прочитать и удалить некий признак для текущего пользователя в базе данных Аксапты.

Код приведенный выше, написан для Ax2009 собственно как и проблема, которая имеет место только в Аx2009 как я понял...
This post has been rated by: Bega (5), Eohaid Bress mac Elatha (1).
Stichworte
aoc, ax2009, активные пользователи, законченный пример, кэш, полезное

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Локальный кеш Ax для Windows 2008 ViV DAX: Администрирование 1 01.12.2010 11:59
Как грамотно почистить кеш Varmen DAX: Администрирование 10 17.02.2010 20:43
Как применить текущие настройки пользователя ко всем пользователям компании? wind DAX: Администрирование 2 21.09.2007 13:01
отчет по всем компаниям delicia DAX: Программирование 6 22.11.2002 14:57
Проблемы настройки прав доступа пользователям axot DAX: Администрирование 25 16.05.2002 10:47

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 02:32 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.