我的服务中有以下代码:
// add Txt record to DNSimple with verification text
await CreateDomainRecordAsync(domain, new DomainRecordDto
{
//....
});
// verify domain on Office365
await _office365domainService.VerifyDomainAsync(domain);
Run Code Online (Sandbox Code Playgroud)
第一个操作是呼叫端点#1(域名管理员)并将TXT记录添加到域.第二个操作是呼叫端点#2(Office365),它验证域regIOS中是否存在TXT记录.
这段代码不起作用,我在第二次操作时遇到异常,TXT记录不存在.
我创建了测试代码:
public IActionResult LongOperation()
{
Thread.Sleep(10 * 1000);
return Ok();
}
public IActionResult Test()
{
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
using (HttpClient httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri("http://test***.azurewebsites.net/home/");
await httpClient.GetAsync("LongOperation");
}
using (HttpClient httpClientLocal = new HttpClient())
{
httpClientLocal.BaseAddress = new Uri("https://localhost:44366/Home");
await httpClientLocal.GetAsync("Test");
}
Run Code Online (Sandbox Code Playgroud)
它按预期工作,调用第一种方法,等待10秒,同时执行"LongOperation",然后调用"Test"方法.
为什么我的域名真实代码不等待以及如何正确执行?
小智 6
你甚至可能没有async-await的问题.
第一个操作执行async并等待,但这是DNS配置更改 - 由于多个DNS缓存层,它可能在几分钟内不可见办公室365.这里错误的假设是:
通常对于像DNS这样的东西,您可能希望每隔15秒重试一次并在一段时间后放弃,或者使用处理更长时间的工作流程.这不是async/await相关 - 它与服务器延迟交付的电子邮件相同.它是协议的一部分.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |