notificationPublisher.PublishAsync未将通知发送给租户

问题描述 投票:0回答:1

我正在尝试向租户发送通知,但没有任何反应,甚至没有在'[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;
}
c# multi-tenant asp.net-boilerplate
1个回答
0
投票

tenantIds显式传递给PublishAsync,而不是UnitOfWorkManager.Current.SetTenantId。这会将通知发布给tenantIds中的subscribed用户,而不是会话的租户。

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

说明

实现细节:如果未同时设置tenantIdsuserIds,则PublishAsync使用AbpSession.TenantId

if (tenantIds.IsNullOrEmpty() && userIds.IsNullOrEmpty())
{
    tenantIds = new[] { AbpSession.TenantId };
}
© www.soinside.com 2019 - 2024. All rights reserved.