Я работаю со службами windows, чтобы получить некоторые данные из API
Служба # 1 получает данные от "http://api.provider.com/Entity1"
Служба # 2 получает данные из "http://api.provider.com/Entity2"
, и у меня есть обе эти службы в одном .csproj, и я использую одноэлементный httpClient для извлечения данных из API:
public sealed class Client : HttpClient{
private static readonly object padlock = new object();
private static Client instance = null;
public static Client Instance
{
get
{
if (instance == null)
{
lock (padlock)
{
if (instance == null)
{
instance = new Client();
}
}
}
return instance;
}
}
private Client()
{
DefaultRequestHeaders.Accept.Clear();
DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json"));
DefaultRequestHeaders.Add("...", "...");
}
public async Task<string> Get(string url)
{
var result = await GetStringAsync(url);
return result;
}}
но эти процессы параллельны, так что синглтон-класс является общим классом stati c для двух. И затем я использую этот класс в качестве потребителя для первого:
class APIHAndler{
public List<obj1> f1()
{
var jsonResult = Client.Instance.Get(url1).Result;
//make list of obj1 out of json
}
public List<obj2> f2()
{
var jsonResult = Client.Instance.Get(url2).Result;
//make list of obj2 out of json
}
}
Что я сделал, так это создал один экземпляр класса APIHAndler
в каждой из моих служб и вызовы f1 и f2 в зависимости от текущей деятельности, и я получаю эту ошибку:
Код состояния ответа не указывает на успех: 429 (Слишком много запросов).
Я думаю, что это, вероятно, связано с тем, что два разных соединения открыты одновременно. но я не знаю, как этого избежать. Если вы можете помочь мне исправить это или найти лучшее решение, я буду очень рад услышать.