ASP.Net использование документов - PullRequest
0 голосов
/ 07 августа 2009

У меня проблема в приложении asp.net. Пользователи могут получить доступ к документу, но только один пользователь может получить доступ к одному документу одновременно. Когда пользователь получает документ, флаг в БД обновляется для документа, указывая, что документ используется. Когда пользователь заканчивает работу с документом, этот флаг снова обновляется, чтобы указать, что документ больше не используется. Проблема возникает, когда у пользователя открыт документ и истекает сеанс пользователя; флаг db не обновляется, чтобы указать, что документ не используется. Если документ открыт тем же лицом, которое его заблокировало (путем изменения флага db), документ открывается. Проблема возникает, если пользователь, который заблокировал документ, отличается от пользователя, который хочет открыть документ, от пользователя, который заблокировал его. Одним из подходов, который я использовал, было создание списка пользователей, которые вошли в приложение. Если пользователь, у которого заблокирован документ, в данный момент не вошел в систему, мы знаем, что документ больше не используется, и мы можем открыть документ. У меня проблема в том, что когда новый пользователь входит в систему, я добавляю идентификатор пользователя в список пользователей, которые в данный момент зарегистрированы. Когда сеанс завершается, метод Session_End в Global.asax удаляет пользователя из списка, но событие не всегда срабатывает (не знаю почему, но, по-видимому, это известная проблема). Есть ли способ заставить это событие исполниться, когда истекает Сессия, или, если кто-то столкнулся с подобной проблемой, может кто-нибудь указать мне на другой подход

Большое спасибо за вашу помощь, ребята Хавьер

1 Ответ

0 голосов
/ 07 августа 2009

Возможно, есть процесс, который выпускает любые открытые документы, если они были заблокированы в течение длительного времени

Или, возможно, разрешите второму пользователю прийти и закрепить замок, если он был заблокирован в течение определенного времени. Это похоже на то, что делает SVN

...