private void OnObjectChanged(ObjectChangedEventArgs args) { if (ObjectChanged != null) { ObjectChanged(this, args); } }
static void notifier_ObjectChanged(object sender, ObjectChangedEventArgs e) { SearchResultEntry result = e.Result; logger.Info("Changed:" + result.DistinguishedName); if (!isUserAccount(result)) { logger.Info("Not a user Account"); return; } if (logger.IsDebugEnabled) { foreach (string attrib in e.Result.Attributes.AttributeNames) { foreach (var item in e.Result.Attributes[attrib].GetValues(typeof(string))) { logger.DebugFormat("\t{0}: {1}", attrib, item); } } } var samAccountName = result.Attributes["samAccountName"].GetValues(typeof(string)).Cast <string>().First <string>(); /// ユーザーを作成しようとしたが,必須項目が入力されていなかったり, /// パスワードの要件が満たされなかった場合,変更イベントは送信されるが, /// その後アカウントが存在しない状況が発生する. /// そういった状況を避けるため,30秒後に再度クエリを実行し,ユーザーアカウントが取得できることを確認する. System.Threading.Thread.Sleep(30000); if (!searcher.isExist(samAccountName)) { logger.InfoFormat(@"{0} の変更要求を受け取りましたが,ディレクトリ上に見つかりませんでした.", samAccountName); return; } /// if (HistoryManager.isExist(samAccountName)) { logger.Info(samAccountName + @" は作成済みキャッシュにあります."); return; } try { invokeCommand(samAccountName); HistoryManager.add(samAccountName, true); } catch (Exception exception) { logger.Error("コマンド実行エラー", exception); } }
static void notifier_ObjectChanged(object sender, ObjectChangedEventArgs e) { SearchResultEntry result = e.Result; logger.Info("Changed:" + result.DistinguishedName); if (! isUserAccount(result)) { logger.Info("Not a user Account"); return; } if (logger.IsDebugEnabled) { foreach (string attrib in e.Result.Attributes.AttributeNames) { foreach (var item in e.Result.Attributes[attrib].GetValues(typeof(string))) { logger.DebugFormat("\t{0}: {1}", attrib, item); } } } var samAccountName = result.Attributes["samAccountName"].GetValues(typeof(string)).Cast<string>().First<string>(); /// ユーザーを作成しようとしたが,必須項目が入力されていなかったり, /// パスワードの要件が満たされなかった場合,変更イベントは送信されるが, /// その後アカウントが存在しない状況が発生する. /// そういった状況を避けるため,30秒後に再度クエリを実行し,ユーザーアカウントが取得できることを確認する. System.Threading.Thread.Sleep(30000); if (!searcher.isExist(samAccountName)) { logger.InfoFormat(@"{0} の変更要求を受け取りましたが,ディレクトリ上に見つかりませんでした.", samAccountName); return; } /// if (HistoryManager.isExist(samAccountName)) { logger.Info(samAccountName + @" は作成済みキャッシュにあります."); return; } try { invokeCommand(samAccountName); HistoryManager.add(samAccountName, true); } catch (Exception exception) { logger.Error("コマンド実行エラー", exception); } }