对于使用asp.net核心对HttpRequestMessage和HttpResponseMessage调用Dispose(或不)的最佳做法是什么?未调用在asp.net核心中对HttpRequestMessage和HttpResponseMessage进行处理
例子:
protected override async Task<AuthenticationTicket> CreateTicketAsync(ClaimsIdentity identity, AuthenticationProperties properties, OAuthTokenResponse tokens)
{
// Get the Google user
var request = new HttpRequestMessage(HttpMethod.Get, Options.UserInformationEndpoint);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", tokens.AccessToken);
var response = await Backchannel.SendAsync(request, Context.RequestAborted);
response.EnsureSuccessStatusCode();
var payload = JObject.Parse(await response.Content.ReadAsStringAsync());
...
}
和 https://github.com/aspnet/Security/blob/1.0.0/src/Microsoft.AspNetCore.Authentication.Facebook/FacebookHandler.cs#L37-L40
两个例子并不调用Dispose
难道这是一个疏漏?或者是否有一个有效的原因,也许是因为该方法是异步?编辑1:当然CG最终会最终确定它们,但是在这种情况下这是最好的做法吗?为什么?
编辑2:上述实施例是我在哪里的代码示例属于的github库打开的问题asp.net核心中间件组件
一旦超出范围而不是(异步)使用,它将自行处置。 –
当然,CG会最终敲定它们,但这是在这种情况下最好的做法,为什么? – PaulMiami
如果在异步方法结束之前调用dispose,则会引发异常。 –