tificationPublisher.PublishAsyn c не отправляет уведомление арендатору - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь отправить уведомление арендатору, но ничего не происходит, даже запись не внесена в таблицу [AbpNotifications]. Я не знаю, где что-то пошло не так.

using (UnitOfWorkManager.Current.SetTenantId(tenantId))
{
    var notificationData = new LocalizableMessageNotificationData(new LocalizableString("OverDueTaskManagementReminderMessage", DConsts.LocalizationSourceName));
    notificationData["a"] = "Accomplish By" + ws.WorkStream.AccomplishOn.ToString("dd/MM/yyyy hh:mm");
    notificationData["pn"] = user.Surname + "" + user.Name;
    notificationData["tmp"] = WorkStreamPriority.Urgent.ToString();

    AsyncHelper.RunSync(() => _notificationPublisher.PublishAsync(AppNotificationNames.OverDueTaskManagementReminder,
        notificationData, severity: NotificationSeverity.Info));

    UnitOfWorkManager.Current.SaveChanges();
    return true;
}

Подписано до публикации sh и кода, как показано ниже, на этот раз уведомление не было вставлено ни в базу данных хоста, ни в арендатор базы данных

* 1005. * await _notificationSubscriptionManager.SubscribeAsyn c (новый UserIdentifier (tenantId, (long) (AbpSession.UserId ?? 1)), AppNotificationNames.OverDueTaskManagementReminder);
            var result = _notificationPublisher.PublishAsync(AppNotificationNames.OverDueTaskManagementReminder,
                notificationData, severity: NotificationSeverity.Info, tenantIds: new[] { tenantId }.Select(x => (int?)Convert.ToInt32(x)).ToArray()).IsCompleted;
                return result;

1 Ответ

0 голосов
/ 20 апреля 2020

Передать tenantIds явно PublishAsync вместо UnitOfWorkManager.Current.SetTenantId.
Это будет публиковать sh уведомлений подписанных пользователей в tenantIds вместо арендатора сеанса.

AsyncHelper.RunSync(() => _notificationPublisher.PublishAsync(
    AppNotificationNames.OverDueTaskManagementReminder,
    notificationData,
    severity: NotificationSeverity.Info,
    tenantIds: new[] { tenantId } // Add this
));

Объяснение

Подробности реализации: если не установлены оба параметра tenantIds и userIds, то PublishAsync использует AbpSession.TenantId.

if (tenantIds.IsNullOrEmpty() && userIds.IsNullOrEmpty())
{
    tenantIds = new[] { AbpSession.TenantId };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...