【发布时间】:2019-01-17 00:28:07
【问题描述】:
我的服务中有以下代码:
// add Txt record to DNSimple with verification text
await CreateDomainRecordAsync(domain, new DomainRecordDto
{
//....
});
// verify domain on Office365
await _office365domainService.VerifyDomainAsync(domain);
第一个操作是调用端点 #1(域注册者)并将 TXT 记录添加到域。第二个操作是调用端点#2(Office365),验证域注册器中是否存在TXT记录。
此代码不起作用,我在第二次操作时遇到异常,即 TXT 记录不存在。
我创建了测试代码:
public IActionResult LongOperation()
{
Thread.Sleep(10 * 1000);
return Ok();
}
public IActionResult Test()
{
return Ok();
}
然后调用它:
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");
}
它按我的预期工作,调用第一个方法,在执行“LongOperation”时等待 10 秒,然后调用“测试”方法。
为什么我的带有域的真实代码不等待以及如何正确执行?
【问题讨论】:
-
TXT 记录不存在 什么是 TXT 记录?鉴于您的代码,这应该没问题。问题显然在于您尚未共享的一段代码。请为您的问题创建一个Minimal, Complete, and Verifiable example
-
另外,DNS 记录需要一段时间才能传播。读取可能需要延迟一段时间。
-
@Liam:TXT 记录是一种 DNS 记录。因此,对第一个端点的调用是 OP 通过其域注册商调用端点来设置此记录。我认为该端点的具体调用方式并不重要,因为它是一个异步方法。
标签: c# async-await