Третья сторона Lib располагает контекстом - PullRequest
0 голосов
/ 03 мая 2018

Без первых двух строк ниже, электронная почта сохраняется в базу данных очень хорошо.

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

System.ObjectDisposedException

Это не имеет смысла для меня, если библиотека каким-то образом неправильно обрабатывает потоки или что-то подобное.

var response = await this._emailSender.SendEmailAsync(email);
email.ResponseStatusCode = (int)response.StatusCode;
this._emailRepository.Save(email);

Мой обходной путь - создать новый контекст:

var context = new ApplicationDbContext(this._options, this._applicationUserProvider);
context.Add(email);
context.SaveChanges();

Есть ли лучший способ решить эту проблему?

1 Ответ

0 голосов
/ 03 мая 2018

, если библиотека каким-то образом неправильно обрабатывает потоки или что-то подобное.

Это асинхронный метод. Строка после await может быть запущена в другом потоке позднее.

Место для поиска находится в коде вызова. Если вы вызываете метод, содержащий эту строку, и не ожидаете / не ожидаете возвращенную задачу, тогда вызывающий код может утилизировать ваш DbContext, пока задача отправки электронной почты еще выполняется.

...