Elsa Workflow配置SMTP后SendEmail报错host参数为空如何解决?
问题根源
Startup.cs中调用AddEmailActivities(elsaSection.GetSection("Smtp").Bind)时,是从Elsa配置节点下读取Smtp子节点的配置,但appsettings.json里的Smtp节点放在了和Elsa平级的位置,导致Elsa无法读取到SMTP配置项,最终抛出host参数为空的错误。你自行编写的发邮件函数可以正常运行,是因为你直接读取了根层级的Smtp配置,不受该层级错位影响。
解决方法
可任选以下一种方案修改:
方案1:调整appsettings.json配置层级
将Smtp节点移动到Elsa节点内部,修改后的配置参考:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "Elsa": { "Server": { "BaseUrl": "http://localhost:5001" }, "Smtp": { "Host": "smtpserver.domainname", "Port": "25", "DefaultSender": "xxxxxxx.xxxxx@xxxxxxxxxxx.com" } }, "AllowedHosts": "*" }
方案2:修改Startup.cs配置读取路径
不改动现有appsettings.json层级,直接修改AddEmailActivities的绑定源为根层级的Smtp节点:
// 把原来的.AddEmailActivities(elsaSection.GetSection("Smtp").Bind) // 改成下面的写法 .AddEmailActivities(Configuration.GetSection("Smtp").Bind)
修改完成后重启Elsa Server即可,原生SendEmail节点可正常读取SMTP配置发送邮件。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

