我使用Signalr來獲取新消息或好友請求時的實時通知,當您查看它們時,它會在數據庫中將「HasBeenViewed」字段更改爲true。Signalr無法識別SQL數據庫的更新。
問題是,當Signalr檢查新的通知時,它看不到更改的「HasBeenViewed」字段,它認爲它仍然是錯誤的。在數據庫本身,我可以確認HasBeenViewed已被正確更改。
Signalr中的查詢確實能夠識別新消息/好友請求是否已添加,或者是否已被刪除。它只是看不到HasBeenViewed的更新值。
如果我重新啓動IIS,那麼它最終會看到更新的HasBeenViewed值並正確顯示通知。但是,如果發送並查看新通知,則返回到無法識別新通知中的查看狀態。
這是我的通知檢查代碼。使用ASP.NET Core。我正在從存儲庫查詢MS SQL數據庫。
public void NotificationCheck(string userName)
{
var user = _repo.Query<ApplicationUser>().Where(u => u.UserName == userName).Include(u => u.FreindRequests).Include(u => u.Messages).FirstOrDefault();
var messageCount = user.Messages.Where(m => m.HasBeenViewed == false).Count();
var friendRequests = user.FreindRequests.Where(f => f.HasBeenViewed == false).Count();
Clients.Caller.notificationCount(friendRequests + messageCount);
}
我不確定是什麼問題。我猜測查詢和信號集線器之間存在一些交互,它將信息存儲在內存中,而不是每次都獲取新信息,但我不知道如何解決它。
感謝所有幫助
如果你想從SQL實時通知你應該簽出服務代理。 –