2013-11-12 6 views
0

Я ищу советы и помощь. В Windows Server в ASP.NET C#:Отправить электронное письмо после изменения папки

  • У меня есть 10 папок (с подпапок и файлов), связанных в БД до 10 пользователей (столбцы: foldername, user).
  • Я изменяю содержимое папок, затем нажимаю кнопку, а пользователям с измененной папкой приходит почтовая служба.

Я думал использовать FileSystemWatcher, но это автоматически срабатывает для каждого изменения (я ошибаюсь?), И он мне не нужен.

Я думаю, что это более просто создать «отпечаток» в каждой папке и хранить его в БД для каждого пользователя (колонки: foldername, user, imprint, imprint_date). Когда я нажимаю кнопку, если новый отпечаток отличается от предыдущего отпечатка, система отправит электронное письмо пользователю (а затем сохранит новый отпечаток в БД).

Что вы думаете об этом решении? Может кто-нибудь может предложить мне, как я могу создать отпечаток?

ответ

0

Вы можете перемещать каталоги и файлы, сохраняя в файле имя + последнее изменение даты, и сохранять это как строку.

Всякий раз, когда вы хотите проверить, сравните строки.

Вы также можете просто их хэш и посмотреть, изменился ли хэш (что не соответствует 100%, поскольку в некоторых случаях вы можете пропустить уведомление), но должно быть более чем достаточно для того, что вам кажется нужным. ..

Edit:
что касается вашего комментария, нет реализации я знаю, но это не должно быть трудно писать.

Я дал вашу проблему немного, хотя ... Вы могли бы использовать FileSystemWatcher, но с твист ... Попросите класс создать 10 наблюдателей и добавьте их обработчики событий, чтобы они отслеживали каждую папку.
Если в этом классе произошел сбой, установите для этого пользователя флаг bool для этого пользователя (например, его вызовите ChangesMade) и отмените регистрацию FileSystemWatcher. Вы не запускаете больше событий, когда больше изменений сделано.

Когда вы нажимаете кнопки отправки электронной почты, просто отправляйте электронные письма тем, у кого есть их свойство ChangesMade, равное true, и зарегистрируйте эти FileSystemWatcher снова для этих папок.

+0

Спасибо, есть какая-либо процедура или компонент, который я могу использовать для создания хэша папки/файлов. Я должен засечь папку, чтобы сделать это? Благодарю. –

+0

Спасибо, это идея goog. 10 (или 100, если пользователи увеличивают) наблюдатели не будут тяжелыми для сервера? –

+0

сомневаюсь в этом. но как только они стреляют, они ложатся спать, поэтому не большая проблема ... вы можете повышать и/или отмечать как ответ, если он решил вашу проблему :) – Noctis

Смежные вопросы