我想将datetime发布到下面的api中。但这并没有完成。
lastRefreshDateTime.Result是日期时间
下面是我尝试的代码:
await client.PostAsync($"{_printApiUrl}pdf/GenerateAndEmailZipOfPDFs/${lastRefreshDateTime.Result}", content, cancellationToken);
[Authorize]
[Route("api/pdf/GenerateAndEmailZipOfPDFs/{lastRefreshDateTime}")]
public void GenerateAndEmailZipOfPDFs([FromBody]List<UrlObject> urls,DateTime lastRefreshDateTime)
答案 0 :(得分:2)
您很可能在异步函数中混入.Result
之类的阻塞调用而遇到死锁。
您需要使用await
。
var lastRefreshDateTime = await _contentManagement.GetLastRefreshDateTime(cancellationToken);
参考Async/Await - Best Practices in Asynchronous Programming
还要注意如何使用$ - string interpolation
生成URI。var uri = $"{_printApiUrl}pdf/GenerateAndEmailZipOfPDFs/{lastRefreshDateTime}";
await client.PostAsync(uri, content, cancellationToken);
显示的URI中有一个错误的$
,导致发布后的日期时间格式错误。
还应该考虑使用路线约束
[Authorize]
[Route("api/pdf/GenerateAndEmailZipOfPDFs/{lastRefreshDateTime:datetime}")]
public void GenerateAndEmailZipOfPDFs(
[FromBody]List<UrlObject> urls,
[FromRoute]DateTime lastRefreshDateTime
)