c# - 从配置文件中获取设置
问题描述
我正在尝试在 ASP.NET Boilerplate 中设置 MailKit 以发送电子邮件,但尽管我已在app.config文件中添加了设置,但我仍然收到此异常。
发送电子邮件的代码:
_emailSender.Send(
to: "*****@gmail.com",
subject: "You have a new task!",
body: $"A new task is assigned for you: <b>Create doFramework</b>",
isBodyHtml: true
);
收到异常:
{Abp.AbpException: 'Abp.Net.Mail.DefaultFromAddress' 的设置值为 null 或空!在 Abp.Net.Mail.EmailSenderConfiguration.GetNotEmptySettingValue(String name) in D:\Github\aspnetboilerplate\src\Abp\Net\Mail\EmailSenderConfiguration.cs:Abp.Net.Mail.EmailSenderBase.NormalizeMail(MailMessage 邮件)的第 44 行在 D:\Github\aspnetboilerplate\src\Abp\Net\Mail\EmailSenderBase.cs:line 96 at Abp.Net.Mail.EmailSenderBase.Send(MailMessage mail, Boolean normalize) in D:\Github\aspnetboilerplate\src\Abp \Net\Mail\EmailSenderBase.cs:C:\Users\Dopravo\source\repos\doFramework\SampleProjects\TaskManagmentApp.Application\Services\TaskAppService 中 TaskManagmentApp.Tasks.TaskAppService.GetAll(GetAllTasksInput 输入)的第 73 行.cs:Castle.Proxies.Invocations 的第 36 行。
app.config文件:
<configuration>
<runtime>
<gcServer enabled="true"/>
</runtime>
<appSettings>
<add key="Abp.Net.Mail.DefaultFromAddress" value="lkaddoura@dopravo.com"/>
<add key="Abp.Net.Mail.DefaultFromDisplayName" value="Lutfi Kaddoura"/>
</appSettings>
</configuration>
解决方案
从关于设置管理的文档:
为了使用设置系统,必须实现ISettingStore接口。虽然您可以以自己的方式实现它,但它已在模块零项目中完全实现。如果未实现,则从应用程序的配置文件(web.config 或 app.config)中读取设置,但无法更改这些设置。范围界定也将不起作用。
要回退配置文件、子类SettingStore
和覆盖GetSettingOrNullAsync
:
public class MySettingStore : SettingStore
{
public MySettingStore(
IRepository<Setting, long> settingRepository,
IUnitOfWorkManager unitOfWorkManager)
: base(settingRepository, unitOfWorkManager)
{
}
public override Task<SettingInfo> GetSettingOrNullAsync(int? tenantId, long? userId, string name)
{
return base.GetSettingOrNullAsync(tenantId, userId, name)
?? DefaultConfigSettingStore.Instance.GetSettingOrNullAsync(tenantId, userId, name);
}
}
ISettingStore
然后在你的模块中替换:
// using Abp.Configuration.Startup;
public override void PreInitialize()
{
Configuration.ReplaceService<ISettingStore, MySettingStore>(DependencyLifeStyle.Transient);
}
推荐阅读
- python - HttpsCallable 从 python 返回
- python - 如何分配用户在井字游戏中输入的值?
- java - 我需要检查每个已安装的应用程序并检查是否允许使用移动数据连接
- python - 解析 Redis MONITOR 消息
- microsoft-graph-api - Graph Explorer ErrorInvalidIdMalformed
- python - 在 Django 的外键中,即时类型更改为 int
- html - 如何根据宽度百分比设置高度 - 纯 CSS
- azure - 创建新的 API 管理服务实例后,为什么内置管理员帐户无法登录开发者门户批准注册的应用程序?
- node.js - 如何查询 mongodb 以比较对象数组?
- python - 如何在 StopIteration 之后继续创建生成器?