Вызвано исключение: "System.ObjectDisposedException" в Microsoft.EntityFrameworkCore.dll

А также:

Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll

Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll

Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll

Я нашел в каких строчках проблема (по крайней мере когда я их убираю код работает), но я уже все что знаю перепробовал, чтобы исправить это.

public async Task<string> RecieveWallInfo()
    {
        var a = await client.GetStringAsync("");
        var wall = JsonConvert.DeserializeObject<Wall>(a);

        var wallDate = DateTimeExtensions.FromUnixTime(wall.response.items[0].date);

        if (wallDate.Day == DateTime.Now.Day)
        {
            StreamInfo streamInfo = await db.StreamInfos.FirstOrDefaultAsync(x => x.date == wall.response.items[0].date);
            if (streamInfo == null)
            {
                await db.StreamInfos.AddAsync(new StreamInfo { count = 1, date = wall.response.items[0].date });
                await db.SaveChangesAsync();
                return wall.response.items[0].text;
            }
            return "0";
        }
        return "0";
    }

Если убрать FirstOrDefaultAsync (строчка с этим) то все работает. Наверняка я что-то намудрил с асинхронными методами. Но понятия не имею что, вроде все также как и у всех ответах на вопросы с похожими проблемами. Возвращаю Task, добавил await, сделал асинхронным все. Не хочет.

В кратце о том, что мне нужно. Пинговать апи каждую минуту (я вызываю этот метод раз в минуту) и проверять для начала, пост был сегодня? Затем я проверяю записан ли в бд пост с такой же датой (чтобы не записывать один пост каждую минуту). Ну и на этом все. К Callback API подключиться не получится. Нельзя. Так как со сторонней страницей работаю.


Ответы (1 шт):

Автор решения: aepot

Вот здесь вам тоже await нужен

using (db = ...)
{
    string result = await RecieveWallInfo();
}
→ Ссылка