BEST
DEALS
OF THE
YEAR!
SAVE UP TO $3,000
24 NOV
1 DEC
00 Days
00 Hrs
00 Min
00 Sec

Activities of "rexhxiao"

You can see the issue by referencing both themes in the same project: typeof(AbpAspNetCoreMvcUiLeptonThemeModule) typeof(AbpAspNetCoreMvcUiLeptonXThemeModule)

The issue is the same for both frontend and backend - we have not overridden Account/Register. Here are the online URLs: https://www.snapglobal.shop (Snap tenant) https://mulan.reni.com.tw (Please switch to the Snap tenant)

For example, I set the password length to 3 in the backend, but the frontend validation still requires a length of 6 when submitting.

I tried to resolve it through inheritance, but it caused another error.

using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JsTree;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.ObjectMapping;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Themes.Lepton.Libraries.JsTree;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Toolbars;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Toolbars;
using Volo.Abp.AspNetCore.Mvc.UI.Theming;
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;

namespace Mulan.One.Public.Web.Themes.Lepton;

public class MulanAbpAspNetCoreMvcUiLeptonThemeModule : AbpAspNetCoreMvcUiLeptonThemeModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        Configure<AbpThemingOptions>(options =>
        {
            options.Themes.Add<LeptonTheme>();

            if (options.DefaultThemeName == null)
            {
                options.DefaultThemeName = LeptonTheme.Name;
            }
        });

        // 和 LeptonXTheme 重覆了,會造成 runtime 錯誤
        // ArgumentException: An item with the same key has already been added. Key: 401
        // Configure<AbpErrorPageOptions>(options =>
        // {
        //     options.ErrorViewUrls.Add("401", "~/Views/Error/401.cshtml");
        //     options.ErrorViewUrls.Add("403", "~/Views/Error/403.cshtml");
        //     options.ErrorViewUrls.Add("404", "~/Views/Error/404.cshtml");
        //     options.ErrorViewUrls.Add("500", "~/Views/Error/500.cshtml");
        // });

        Configure<AbpVirtualFileSystemOptions>(options =>
        {
            options.FileSets.AddEmbedded<AbpAspNetCoreMvcUiLeptonThemeModule>();
        });

        Configure<AbpToolbarOptions>(options =>
        {
            options.Contributors.Add(new LeptonThemeMainTopToolbarContributor());
        });

        Configure<AbpBundlingOptions>(options =>
        {
            options
                .StyleBundles
                .Add(LeptonThemeBundles.Styles.Global, bundle =>
                {
                    bundle
                        .AddBaseBundles(StandardBundles.Styles.Global)
                        .AddContributors(typeof(LeptonGlobalStyleContributor));
                });

            options
                .ScriptBundles
                .Add(LeptonThemeBundles.Scripts.Global, bundle =>
                {
                    bundle
                        .AddBaseBundles(StandardBundles.Scripts.Global)
                        .AddContributors(typeof(LeptonGlobalScriptContributor));
                });
        });

        Configure<AbpBundleContributorOptions>(options =>
        {
            options.Extensions<JsTreeStyleContributor>()
                .Add<LeptonJsTreeStyleContributorExtension>();
        });

        context.Services.AddAutoMapperObjectMapper<AbpAspNetCoreMvcUiLeptonThemeModule>();

        Configure<AbpAutoMapperOptions>(options =>
        {
            options.AddProfile<LeptonThemeAutoMapperProfile>(validate: true);
        });
    }
}

Are there any solutions to this problem?

That is a built-in module in ABP. I think I found the reason. You must execute:

options.UseAutofac();

internal class Program { private static async Task Main(string[] args) { using var app = await AbpApplicationFactory.CreateAsync<AbpEmailingModule>();

    await app.InitializeAsync();

    var settingProvider = app.ServiceProvider.GetRequiredService&lt;ISettingProvider&gt;();

    var test = await settingProvider.GetOrNullAsync(EmailSettingNames.DefaultFromAddress);
}

}

Unhandled exception. Volo.Abp.AbpException: Undefined setting: Abp.Mailing.DefaultFromAddress at Volo.Abp.Settings.SettingDefinitionManager.GetAsync(String name) at Volo.Abp.Settings.SettingProvider.GetOrNullAsync(String name) at TwAbp.Emailing.Surenotify.ConsoleTest.Program.Main(String[] args) in /Users/rex/Documents/surenotify-emailing/TwAbp.Emailing.Surenotify/TwAbp.Emailing.Surenotify.ConsoleTest/Program.cs:line 19 at TwAbp.Emailing.Surenotify.ConsoleTest.Program.<Main>(String[] args)

Process finished with exit code 134.

Question

I would like to ask, if I have implemented both MailKit and another similar email sending module, how can I allow tenants to choose one of them to send emails through configuration?

I’m heading in the same direction as well. Thank you for your response.

We didn’t see the part where “Payment module will support getting the current tenant URL.” Our tenant domains can vary, for example: https://{0}.mydomain.com https://snapshop-a.mydomain.com or https://www.snapshop-b.com

All of the above belong to the same SaaS application system. We need to dynamically generate the corresponding domain URLs. Could you please show us how to achieve this?

We are currently using PAYUNi as our payment provider (https://www.payuni.com.tw/). Will using different payment providers have any impact?

Showing 1 to 10 of 44 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on November 20, 2025, 09:12
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.