我的服務中有以下代碼: // 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 秒,然后調用“Test”方法。為什么我的帶有域的真實代碼不等待以及如何正確執行?
1 回答

湖上湖
TA貢獻2003條經驗 獲得超2個贊
你甚至可能沒有異步等待的問題。
第一個操作執行異步并且您等待,但這是 DNS 配置更改 - 由于多個 DNS 緩存層,它可能在幾分鐘內不可見 office 365。這里的錯誤假設是:
DNS 更改立即可見
這是一個異步/等待問題。
通常對于像 DNS 這樣的東西,您可能希望每 15 秒重試一次并在一段時間后放棄,或者采用處理更長超時時間的工作流程。這與異步/等待無關 - 這與服務器可能延遲交付的電子郵件相同。它是協議的一部分。
- 1 回答
- 0 關注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消