【发布时间】:2019-08-21 19:33:43
【问题描述】:
我有一个模型,我在async 方法中设置接收者,然后如果电子邮件是 X 类型,我需要从其他两个对象生成 URL。但是,model.Url 在分配接收者时不会被分配。我应该如何修复它以使其适用于两者?
private async Task GenerateUrl(Model model)
{
var urlModel = GetUrlByOrganizationId(model.OrgId);
var org = GetOrg(model.Id);
model.Url = brand.Domain + org.Name;
await Task.FromResult(model.Url);
}
private async Task<Email> GenerateEmail(User receiver, Guid brandId)
{
var model = new Model()
{
title = "",
Organization = organization,
Url = string.Empty
};
try
{
await model.SetReceiverAsync(receiver, 0, model.Locale, model.Dialect);
await this.GenerateUrl(model);
}
catch (Exception exc)
{
this.Log(LogLevels.Warning, exc.Message);
return null;
}
// Send email
var email = Sender.RenderModel(template, model);
return email;
}
我想在var email = Sender.RenderModel(template, model); 行中使用model.Url
【问题讨论】:
-
是否抛出异常?可能是 GetUrlByOrganizationId 或 GetOrg 失败。在 VS 中打开“异常设置”窗口,并为所有“CLR 异常”打开“抛出时中断”,以便在抛出任何托管异常(是否捕获)后立即在调试器中停止代码
-
注意;你用
var urlModel做什么?分配了一个值但从未使用过?您是否打算使用它但使用模型而不是导致 null ref 等? -
我看到您在这里错过了泛型类型
Task GenerateUrl(Model model)Task<String> GenerateUrl(Model model)当您通过 Task.FromResult(mode.Url) 返回字符串时,这更有意义。 -
所以在
GenerateUrl(Model model)中,我的模型似乎是null,即使我在调用方法之前为其设置了值
标签: c# asynchronous asp.net-core async-await