У меня есть функционирующий Task асинхронного, который вызывает веб-службу:Проблемы создания HttpClient вспомогательного метод
private async Task GetResult()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Username", _username);
client.DefaultRequestHeaders.Add("Action", "GET");
/* etc */
var response = await client.GetAsync(client.BaseAddress);
}
}
Я хотел бы выделить создание объекта HttpClient, поэтому он может быть параметризованным и повторно:
private async Task GetResult()
{
using (var client = GetClient(_baseAddress, _username))
{
var response = await client.GetAsync(client.BaseAddress);
}
}
private static HttpClient GetClient(string Address, string Username)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(Address);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Username", Username);
client.DefaultRequestHeaders.Add("Action", "GET");
/* etc */
return client;
}
}
в то время как это, кажется, функционально идентичен мне, последний выдает ошибку AggregateException
с внутренним исключением
Не удается получить доступ к расположенному объекту. Имя объекта: «System.Net.Http.HttpClient».
Возможно, есть какая-то асинхронная тонкость, которую я не понимаю?
Я обновил название, чтобы прояснить проблему - не стесняйтесь отката. –
Выглядит хорошо. Я не мог придумать правильную формулировку. – Matt