Я работаю над проектом с несколькими арендаторами, в котором у каждого арендатора есть свои клиенты. В настоящее время я реализую материал в реальном времени, в котором всякий раз, когда какой-либо клиент регистрируется или существующий клиент редактирует информацию своего профиля, я хочу уведомить арендатора этого клиента в режиме реального времени (используя signalR).
Для обнаружения изменений в таблице клиентов я использую SqlDependency и SqlTrigger. Триггер сделает запись в таблице уведомлений (которая в основном содержит некоторые идентификаторы (например, TenantId, CustomerId), на которые влияют, и некоторую другую информацию), а в событии, запущенном Sqldependency, я вызываю метод, который в дальнейшем вызывает клиентский метод, используя signalR контекст.
Теперь моя проблема в том, что я не могу получить доступ к потоку HttpContext.Current в событии Sqldependency, он имеет значение null, потому что для его выполнения не выполняется запрос. Проверьте это изображение:
Пожалуйста, поправьте меня, если я ошибаюсь. Я хочу получить доступ к этому HttpContext.Current, потому что я хочу получить доступ к текущему арендатору для уведомления. И моя реализация TenantProvider получает арендатора с узла URL.
Итак, мой первый вопрос: есть ли способ получить доступ к контексту, в котором выполняется код функции события??
Если нет, то у меня есть другой вариант с некоторыми сомнениями. Вариант заключается в том, что я сохраняю таблицу изменений в уведомлениях, которая содержит информацию TenantId, CustomerId и т. д. Я могу получить доступ к уведомлению с последней отметкой времени, и из этой записи я могу получить tenantId для уведомления.
Теперь сомневаюсь, что 2 или более клиентов зарегистрируются одновременно и перед доступом к последней записи уведомления с отметкой времени вызовут ввод другого уведомления также, чем в этом случае, мы пропустили какое-то уведомление.
Так что мой второй вопрос заключается в том, думаю ли я об этом или это действительно проблема. Если это действительно проблема, пожалуйста, дайте мне знать решение ??
CustomerId
кTenantId
через одну из ваших таблиц? - person zimdanen   schedule 17.04.2014