#asp.net-core #.net-core-2.2
#asp.net-core #.net-core-2.2
Вопрос:
У меня есть ASP.net Основной веб-API, выполняющий ASP.net Основной веб-хост. В ServiceCollection я регистрирую HostedService для запуска worker, который подписывается на шину сообщений.
Некоторые сообщения приходят из веб-API. Некоторые сообщения поступают из шины сообщений через worker. Все они записываются в базу данных.
В настоящее время у меня возникают проблемы, когда, когда я записываю сообщения, поступающие от работника, в базу данных, я получаю System.Исключение ObjectDisposedException в моей зависимости, введенной службой с ограниченной областью доступа к данным.
Такое ощущение, что мой работник каким-то образом использует области HTTP-запросов для служб, введенных DI.
Итак, может ли это быть вызвано использованием Размещенного сервиса в ASP.NET Основной Веб-хост
Комментарии:
1. Покажите какой-нибудь код — мы понятия не имеем, что вы сделали, чтобы перевести его в такое состояние. И, конечно, вы можете запустить
IHostedService
. Это часть фреймворка, а не веб-хостинга.2. Не могли бы вы, пожалуйста, опубликовать коды вашей рабочей службы и коды службы, ограниченной доступом к данным?
Ответ №1:
Не читайте сообщения в ServiceHosted, вам следует читать их отдельно (возможно, в одноэлементном сценарии)
Если вы читаете сообщения из служебной шины вручную, у вас не должно возникнуть этой проблемы, иначе вам не следует использовать для этого службы с ограниченной областью действия. например, в RabbitMQ лучше всего открывать соединение для каждого приложения