AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2004, 12:16   #1  
bm is offline
bm
Участник
 
29 / 10 (1) +
Регистрация: 30.06.2004
? А почему Завершить сессию Не работает?
Или не всегда работает.
ЗЫ Тонкий клиент,3-х уровневая арх-ра.
Старый 06.07.2004, 12:34   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
А у вас клиент тонкий? А у сессии?
__________________
С уважением,
glibs®
Старый 06.07.2004, 15:27   #3  
bm is offline
bm
Участник
 
29 / 10 (1) +
Регистрация: 30.06.2004
все клиенты тонкие. и сессии.
Старый 06.07.2004, 15:53   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Эх. Тряхну стариной. Вот код, который запускался из startup Applicationa и следил, если ли уже открытые сесси у данного пользователя. Если есть, то по запросу убивал. Для верности было сочетание terninate + notify. Просто terminate не всегда убивал сессии. Попробйте!
PHP код:
//SP0003_CheckSessions_GNRD
void checkAllOpenSessions_flx()
{
    
int             counter 0;
    
int             maxSessions;
    
int             curSessionId = new xSession().sessionId();
    
container       users;
    
int             sesId;
    
userId          userId;
    
ClientType      clientKind;
    
date            loginDate;
    
int             loginTime;
    
str             clientComputerName;
    
str             databaseSpid;
    
userName        userName;
    
AOSClientMode   clientMode;
    
int             idleTicks;
    
str             info;
    
Session         sessionToTerm;
    
AOSSessionInfo  testSession;
    ;

    [ 
usersmaxSessions ] = SysUsersOnline::getAllOnlineUserInfo();

    for(
counter 1counter <= maxSessionscounter++)
    {
        [   
sesId,
            
userId,
            
clientKind,
            
loginDate,
            
loginTime,
            
clientComputerName,
            
databaseSpid,
            
userName,
            
clientMode,
            
idleTicks
            
] = conPeek(userscounter);

        if (
userId == '-AOS-')
            continue;

        if (
sesId != curSessionId && userId == curuserid())
        {
            
info strfmt("????????! ? ???????????? %1 (%2) ??? ???? ???????? ?????? ? ??????? %3 ???????? ? ?????????? %4 %5 ????? ? %6. ??????? ?????? ???????",
                                    
UserName,
                                    
UserId,
                                    
sesId,
                                    
clientComputerName,
                                    
loginDate,
                                    
time2str(loginTime,1,1));
            if (
Box::yesNo(info,DialogButton::Yes,"????????! ???? ???????? ??????!","?? - ??????? ?????? ?????? (?????????????), ??? - ??????????") == DialogButton::Yes)
            {
                
sessionToTerm = new Session(sesId);
                
sessionToTerm.terminate();
                
info strfmt("????????! ???? ?????? ???? ???????? ? ?????????? %1!"clientComputerName);
                
testSession = new AOSSessionInfo(sesId);
                if (
testSession)
                    
AOSSessionInfo::sendMessage(sesId"????????!"info);
                
sessionToTerm.notify();
                
sessionToTerm NULL;
            }
        }
    }

С Уважением,
Георгий
За это сообщение автора поблагодарили: Logger (5).
Старый 06.07.2004, 17:47   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Добавил часть приведенного кода под кнопку завершения сессии - не работает все равно Глупость, конечно, но неужели важно, чтобы именно при запуске и именно свои сессии снимать?
__________________
Андрей.
Старый 06.07.2004, 18:19   #6  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Андрей! Так затем и писалась данная модификация, т.к. пользователи любили бегать от компа к компу (!) и оставлять за собой открытые сессии. А у нас часто ввод данных (вырабока и т.п) или ограниченние по вводу данных (одобрить маршрут, цену...) завязано на текущего пользователя. Ну, и плюс самые элементарные соображения безопасности. А так.. бардак творился, в общем. (Свою сессию она не убивает, кстати )
Потом появилось вот что: часть сессий "зависало" и ничем их было не выковырять
После этого появились попытки убить с помощью такого кода:
PHP код:
testSession = new AOSSessionInfo(sesId);
if (
testSession)
   
AOSSessionInfo::sendMessage(sesId"Внимание, Ваша сессия закрыта!"info);
sessionToTerm.notify(); 
Это я где-то на форуме прочитал, что должно убить 100%
На деле же, кажется, все равно не работает...
в 3х звенке "наглухо" зависшая сессия погибала только при перестарте АОСа

Может, у кого есть какие соображения?

С Уважением,
Георгий
Старый 06.07.2004, 18:26   #7  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Developers's Guide \ Executing commands on startup (c)

Note
The startup methods are used for vital system and version specific calls, and you should never modify them directly. Serious consequences may follow if the SYS layer versions of the methods are not called.

А какие права нужны пользователю , чтобы прибивать чужие (неважно, что USERID тот же) сессии?
Старый 06.07.2004, 18:43   #8  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Хороший вопрос.

Беда в том, что даже tuning и admin не убивали "мертвые души"
Старый 06.07.2004, 18:49   #9  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А "независшая" система погибала, (даже на самых маленьких правах !!!) Только при э-э-э... Getting focus. Имхо, при первом же обращении к Б.Д.
Старый 06.07.2004, 19:06   #10  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Ясно. В процессе ответов вспомнился и ответ на вопрос. Вы можете убить сессию из Администрирование -> Активные пользователи, но реально он умрет, когда начнет работать. При первом же щелчке в главном меню (сиречь первом обращении к БД) ему скажут, что его сессию прервали. То же, при посылке сообщения и получения просто фокуса программой.

Но это не объясняет моей проблемы с мертвыми сессиями...
Старый 21.08.2008, 10:12   #11  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
а вот в 2.5 этой кнопочке убить сессию нет ((
можно ли ее туда добавить ?
Старый 21.08.2008, 13:36   #12  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
2propeller:
Тему-дубль этого вопроса я прибил, чтобы в 2х темах одинаковые дискуссии не плодились.

Насколько я помню (сейчас 2.5 под рукой нет), кнопка была. Может, на форме убрали? А класс SysUsersTerminate есть в репозитарии?
__________________
Андрей.
Старый 21.08.2008, 13:53   #13  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
неа такого нет(
Старый 28.08.2008, 17:58   #14  
Shakr
Гость
 
n/a
Существуют ли способы убить свою собственную сессию?
Теги
ax2.5

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли завершить сессию на 2 уровневой архитектуре. propeller DAX: Программирование 2 05.11.2008 09:49
Можно-ли завершить текущую(свою) сессию? egorych DAX: Программирование 2 09.10.2007 15:50
почему на работает common.(fieldId)[idx] maze DAX: Программирование 3 31.08.2007 06:48
Почему не работает кнопка Исходный документ в Бухг провод? Arahnid DAX: Программирование 1 20.05.2007 11:20
Почему не работает not exists в конструкции while select Владимир Максимов DAX: Программирование 2 03.02.2004 12:17

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:19.