Из прочтения других сообщений в stackoverflow я пытаюсь повторно использовать один и тот же httpclient для нескольких методов, но все равно получаю сообщение об ошибке:
System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net.Http.HttpClient'.
public class Program
{
private readonly static HttpClientHandler handler = new HttpClientHandler();
private readonly static HttpClient client = new HttpClient(handler, false);
public Program()
{
client.BaseAddress = new Uri();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
public async IDictionary<string, object> GetCustomer(string customerId)
{
using (client)
{
try
{
var response = await client.GetAsync().ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseContent = await.result.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<IDictionary<string, object>(responseContent);
}
catch { }
}
}
public async IDictionary<string, object> GetOrdersByCustomerId(string customerId)
{
using (client)
{
try
{
var response = await client.GetAsync().ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responseContent = await.result.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<IDictionary<string, object>(responseContent);
}
catch { }
}
}
}
Inотдельный файл, я вызываю эти два метода один за другим, как таковые:
var customer = programInstance.GetCustomer().GetAwaiter().GetResult();
var orders = programInstance.GetOrdersByCustomerId().GetAwaiter().GetResult();
Когда я вызываю GetCustomer()
, ответ 200 OK, и я могу получить информацию, которую яхочу, но как только я позвоню GetOrdersByCustomerId()
, я получу сообщение об ошибке, заявленное ранее.
Я читал о том, нужно ли утилизировать httpclient или как некоторые люди избавились от ошибки, захвативобработчик и установка располагают в false, но это не похоже на то, что это работает для меня.
Есть что-то, что я здесь упускаю?