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

328
24 июня 2022, 06:50

А также:

Вызвано исключение: "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 подключиться не получится. Нельзя. Так как со сторонней страницей работаю.

Answer 1

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

using (db = ...)
{
    string result = await RecieveWallInfo();
}
READ ALSO
Как заставить выполняться длительный код по нажатию кнопки ASP.NET Core

Как заставить выполняться длительный код по нажатию кнопки ASP.NET Core

У меня есть код который должен работать 24/7 и есть сервер через который я должен его запускатьТо есть отправил запрос http://site

253
Двери работают странно

Двери работают странно

Делаю 2д платформер, захотел двериПо идее должно работать так - есть дверь, и у нее есть linkeddoor, при нажатии E пока в двери происходит телепортация...

323
c# Как скачать видео с vk.com?

c# Как скачать видео с vk.com?

С помощью VK API методом videoget получил ссылку на видео: Ссылка на видео

344
Синхронизация константа и JSON базы

Синхронизация константа и JSON базы

Я хочу, чтобы данные в константе или объекте обновлялись, те

194