Activities of "berkansasmaz"

Hi,

Records are deleted after they are published to the event bus. However, if you want to test this, you can test it by setting send to false as below:

Configure<AbpDistributedEventBusOptions>(options =>
{
    options.Outboxes.Configure(config =>
    {
        // IsSendingEnabled (default: true): You can set to false to disable sending outbox events to the actual event bus. If you disable this, events can still be added to outbox, but not sent. This can be helpful if you have multiple applications (or application instances) writing to outbox, but use one of them to send the events.
        config.IsSendingEnabled = false
    });
});

reference: https://abp.io/docs/latest/framework/infrastructure/event-bus/distributed#outbox-configuration

Hi,

I have tested the problem you mentioned both with and without description but I didn't have any problem. Here are the screenshots from my test:


How can I reproduce your problem?

Hi,

I understand, my advice would be to create a 9.1 project from scratch and compare the differences with your own project.

Also, if you have not looked at it, I recommend you to look at the related migration guides while doing the upgrade process. See: https://abp.io/docs/latest/release-info/migration-guides

Hi,

This is a known issue because SAAS and Identity are two separate modules, the password cannot be verified in the module.

But you can custom it in your project:

[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ITenantAppService))]
public class MyTenantAppService : TenantAppService
{
    protected IOptions<IdentityOptions> IdentityOptions { get; }
    private IdentityUserManager _userManager;

    public MyTenantAppService(
        ITenantRepository tenantRepository,
        IEditionRepository editionRepository,
        ITenantManager tenantManager,
        IDataSeeder dataSeeder,
        IDistributedEventBus distributedEventBus,
        IOptions<AbpDbConnectionOptions> dbConnectionOptions,
        IConnectionStringChecker connectionStringChecker,
        IOptions<IdentityOptions> identityOptions, IdentityUserManager userManager) : base(tenantRepository, editionRepository, tenantManager, dataSeeder, distributedEventBus, dbConnectionOptions, connectionStringChecker)
    {
        IdentityOptions = identityOptions;
        _userManager = userManager;
    }

    public async override Task<SaasTenantDto> CreateAsync(SaasTenantCreateDto input)
    {
        if (!input.AdminPassword.IsNullOrWhiteSpace())
        {
            await ValidPasswordAsync(input.AdminPassword);
        }

        return await base.CreateAsync(input);
    }

    public async override Task SetPasswordAsync(Guid id, SaasTenantSetPasswordDto input)
    {
        await ValidPasswordAsync(input.Password);
        await base.SetPasswordAsync(id, input);
    }

    private async Task ValidPasswordAsync(string password)
    {
        var errors = new List<IdentityError>();
        var isValid = true;
        await IdentityOptions.SetAsync();

        foreach (var passwordValidator in _userManager.PasswordValidators)
        {
            var result = await passwordValidator.ValidateAsync(_userManager, null, password);
            if (!result.Succeeded)
            {
                if (result.Errors.Any())
                {
                    errors.AddRange(result.Errors);
                }

                isValid = false;
            }
        }

        if (!isValid)
        {
            IdentityResult.Failed(errors.ToArray()).CheckErrors();
        }
    }
}

Hi,

Here is a detailed explanation of why this does not work in the tiered architecture and what needs to be done to make it work. If you have any questions, please feel free to ask.

I suppose you are using auto API controllers feature which is default with the startup template.

In such case, ABP can not generate Dynamic JavaScript Proxies as @maliming stated. For tiered usage, you should manually create API controllers in the .HttpApi project and call the related application service. I guess you understand the reason; because Web project will have no reference to the app layer as @maliming said. But when you create manual API controller in the HttpApi project, Web will know the API and can produce dynamic JS proxies.

Because of this reason, we always manually create API Controllers for pre-build modules to make them tiered-compatible. Example: https://github.com/abpframework/abp/blob/dev/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityUserController.cs

Hello,

YourComponentName-routing.module.ts should be as follows:

import { CreateBookComponent } from './create-book/create-book.component';
import { EditBookComponent } from './edit-book/edit-book.component';

const routes: Routes = [
  { path: '', component: BookComponent, canActivate: [authGuard, permissionGuard] },
  { path: 'create', component: CreateBookComponent },
  { path: 'edit/:id', component: EditBookComponent },
];

More information on this topic can be found here: https://abp.io/community/articles/converting-createedit-modal-to-page-angularui-doadhgil

Hi,

We apologize for the trouble. We will do our best to prevent it from happening again.

The problem with the Suite should be fixed by uninstalling and reinstalling the Suite.

abp suite remove
abp suite install

Hi,

Can you send your entity contents and if you have a configuration for AbpDistributedEntityEventOptions?

Hi,

You can check this document to add domain or subdomain tenant resolver in Angular. There is probably a problem with your angular environment. However, you can resolve this error by comparing it with the document.

Hi,

If you don't use the Setting Management module, you can simply define the settings inside your appsettings.json file:

"Settings": {
  "Abp.Mailing.Smtp.Host": "127.0.0.1",
  "Abp.Mailing.Smtp.Port": "25",
  "Abp.Mailing.Smtp.UserName": "",
  "Abp.Mailing.Smtp.Password": "",
  "Abp.Mailing.Smtp.Domain": "",
  "Abp.Mailing.Smtp.EnableSsl": "false",
  "Abp.Mailing.Smtp.UseDefaultCredentials": "true",
  "Abp.Mailing.DefaultFromAddress": "noreply@abp.io",
  "Abp.Mailing.DefaultFromDisplayName": "ABP application"
}

See more: https://abp.io/docs/latest/framework/infrastructure/emailing#email-settings

Showing 11 to 20 of 608 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.2.0-preview. Updated on March 25, 2025, 11:10