2013-10-04 3 views
1

Я повсюду пытался найти ответ на этот вопрос, поэтому, надеюсь, кто-то может помочь.C# SignalR: HttpContext.Current.ApplicationInstance is null

Немного фона: у меня ноги мокрые от SignalR и пытались развернуть на Chat Room Example. Моя идея состоит в том, чтобы иметь список пользователей, которые вошли в комнату. Я пытаюсь сделать это, сохраняя список имен пользователей в кеше «пользователей» и сохраняя и распространяя этот список при входе/выходе пользователя в систему. Я хочу получить доступ к этому списку из кода моего концентратора по запросу клиента.

Когда я использую Application, я получаю желаемые результаты, но я понимаю, что HttpContext.Current.Application - не лучший способ пойти, поскольку он существует только для совместимости с классическим asp. Я вижу много рекомендаций для HttpContext.Current.ApplicationInstance, однако всякий раз, когда я обращаюсь к этому, я получаю NullPointerException по адресу ApplicationInstance. Каков наилучший способ манипулирования кеш-ключами (или эквивалентом) для того, что я пытаюсь выполнить?

ответ

2

Я бы не рекомендовал использовать приложение для этого вообще. Если вы просто хотите кэшировать и обновлять его на основе таких событий, как вход/выход из системы, используйте статический член в вашем классе или кеше объекта (например, http://msdn.microsoft.com/en-us/library/dd997357.aspx)

+0

идея статического члена была настолько проста и эффективна. Именно то, что я искал. Большое спасибо. – misterManager

1

Используйте базу данных, кеш или статическую переменную для хранения вашего состояния. Избегайте использования HttpContext.Current внутри SignalR.