Jon*_*ood 2 c# using httpclient async-await razor-pages
我想用它HttpClient来获取我的网页内容。
public async Task<IActionResult> OnGet()
{
NetworkCredential credentials = new NetworkCredential(Settings.Username, Settings.Password);
using (HttpClientHandler handler = new HttpClientHandler { Credentials = credentials })
using (HttpClient httpClient = new HttpClient(handler))
{
Content = await httpClient.GetStringAsync(requestUriString);
}
return Page();
}
Run Code Online (Sandbox Code Playgroud)
问题是我的using语句导致HttpClient和对象在完成HttpClientHandler之前被销毁。GetStringAsync()
我可以删除这些using语句,但我不能保证连接会及时处理。
请注意,HttpClient没有实现IAsyncDisposable,因此使用await using不是一个选项。
如何确保我的 HTTP 对象尽快得到处理,而不是在代码完成之前处理它们?
所以 HttpClient 作为 IDisposable 实际上有点奇怪。尽管它实现了 IDisposable 接口,但Microsoft 实际上建议不要将其放在 using 语句中。
如果您在 ASP.NET Core 上下文中使用它,则应使用HttpClientFactory来管理 HttpClient 的生命周期。如果不是,建议使用单个静态实例,但请注意这可能会导致其他问题,例如 DNS 过时。
| 归档时间: |
|
| 查看次数: |
5748 次 |
| 最近记录: |