В настоящее время я работаю над службой мониторинга работоспособности, которая будет звонить на каждый веб-сайт, размещенный на данном компьютере.То, что он делает, является базовым для того, чтобы он работал на всех размещенных веб-сайтах, совершал вызов на компьютер через HttpClient для каждого и сохранял их текущий статусный ответ в базе данных.Проблема заключается в том, что эта служба при запуске создает несколько рабочих процессов IIS, которые просто не исчезают, а использование памяти увеличивается на 1% каждые несколько минут.Я почти уверен, что это не случайно, я искал много разных тем в отношении этой проблемы, но не смог найти результат, который бы сработал для меня. Есть идеи, как решить эту проблему?Вот выдержка из кода, который я использую:
public void PingWebsites(List<Website> websites)
{
using (var client = new HttpClient())
{
for (int i = 0; i < websites.Count(); i++)
{
{
if (!websites[i].Environment.Contains("CI"))
{
Task<HttpResponseMessage> response = null;
try
{
response = client.GetAsync(websites[i].Address);
if (!response.Result.IsSuccessStatusCode)
{
SaveStatus(websites[i].ID, 0);
}
else
{
SaveStatus(websites[i].ID, 1);
}
}
catch (Exception e)
{
SaveStatus(websites[i].ID, 0);
}
finally {
if (response != null)
{
response.Dispose();
}
}
}
}
}
}
}
Я также искал возможность ошибки таймера и вызова sql, но я считаю, что это больше проблема сHttpClient.
РЕДАКТИРОВАТЬ: Я также пытался использовать уникальный экземпляр HttpClient, но потребление памяти было таким же, все больше и больше потребляется с течением времени, так что это не моя текущая проблема.