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<ISettingProvider>();
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.
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?