Hi,
You can configure different storage for different containers. for example:
[BlobContainerName("host-profile-pictures")]
public class HostPictureContainer
{
}
[BlobContainerName("tenant-profile-pictures")]
public class TenantPictureContainer
{
}
Configure<AbpBlobStoringOptions>(options =>
{
options.Containers.Configure<HostPictureContainer>(container =>
{
container.IsMultiTenant = false;
container.UseAws(aws =>
{
....
});
});
options.Containers.Configure<TenantPictureContainer>(container =>
{
container.UseAzure(azure =>
{
....
});
});
});
Hi,
ABP supports password aging in version 7.2.0 .
https://blog.abp.io/abp/ABP.IO-Platform-7.2-RC-Has-Been-Published https://docs.abp.io/en/commercial/latest/modules/identity/periodic-password-change
Hi,
You can check the document:
Hi,
I remember that we have fixed the problem. could you try upgrading to the latest version to test it?
Hi,
You can download files here:https://gist.github.com/realLiangshiwei/c05a989c395f8982b494378d814e0d61
Hi,
Sorry for that, I forgot it is not included in the downloaded source code.
You can tell me which files you want to remove and I will repackage and share it with you
Hi,
I noticed your version is 5.2 and you are using the Hangfire provider.
We enhanced it in 6.0: https://github.com/abpframework/abp/pull/14608
you can override the HangfireBackgroundWorkerManager
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IBackgroundWorkerManager)]
public class MyHangfireBackgroundWorkerManager : HangfireBackgroundWorkerManager
{
private bool _isDisposed;
private readonly List<IBackgroundWorker> _backgroundWorkers;
public async override Task StartAsync(CancellationToken cancellationToken = default)
{
await base.StartAsync(cancellationToken);
await StartWorkersAsync(cancellationToken);
}
public async override Task AddAsync(IBackgroundWorker worker, CancellationToken cancellationToken = default)
{
switch (worker)
{
case IHangfireBackgroundWorker hangfireBackgroundWorker:
case AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase:
await base.AddAsync(worker, cancellationToken);
break;
default:
_backgroundWorkers.Add(worker);
if (IsRunning)
{
await worker.StartAsync(cancellationToken);
}
break;
}
}
private async override Task StartWorkersAsync(CancellationToken cancellationToken = default)
{
IsRunning = true;
foreach (var worker in _backgroundWorkers)
{
await worker.StartAsync(cancellationToken);
}
}
public override async Task StopAsync(CancellationToken cancellationToken = default)
{
IsRunning = false;
foreach (var worker in _backgroundWorkers)
{
await worker.StopAsync(cancellationToken);
}
}
}
I read something about the use of external logins on the Auth Server
I think it should be working. have you give it a try?
if used for multiple years, the data will inevitably become very large. Is there a better alternative?
No, as I said, you should rethink your use cases. you can consider using data range to filter data.
Hi,
Try:
MyMainHeaderToolbarUserMenu.razor
@using Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme.Components.ApplicationLayout.SideMenu.MainHeader
@using Volo.Abp.DependencyInjection
@inherits MainHeaderToolbarUserMenu
@attribute [ExposeServices(typeof(MainHeaderToolbarUserMenu))]
@attribute [Dependency(ReplaceServices = true)]
My Custom Page
MyMainHeaderToolbarUserMenu.razor.cs
using Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme.Components.ApplicationLayout.SideMenu.MainHeader;
using Volo.Abp.DependencyInjection;
[ExposeServices(typeof(MyMainHeaderToolbarUserMenu))]
[Dependency(ReplaceServices = true)]
public partial class MyMainHeaderToolbarUserMenu
{
}