PerWebRequest LifetimeManager и за его пределами (Asp.net Mvc) - PullRequest
0 голосов
/ 13 сентября 2009

В настоящее время я создал свой собственный PerWebRequestLifetimeManager, используя HttpContext.Current.Items в качестве резервного хранилища. Я использовал этот менеджер времени жизни для Linq2Sql DataContext.
Eveything работает нормально, пока мне не нужно использовать кэш для хранения данных (в течение 5 минут). Через 5 минут мне нужно извлечь данные из БД и поместить их в кэш. Для этого мне нужно использовать Linq2Sql DataContext для получения данных. Но в течение этого времени HttpContext.Current имеет значение null, поскольку это произошло, когда срок действия кэша истек; отсутствует в веб-запросе.
Итак, какой LifetimeManager я должен использовать для этого сценария?

Заранее спасибо.

1 Ответ

0 голосов
/ 19 марта 2010

Вам нужен давний DataConext? Используйте контейнер LifeTimeManager. Я бы создал контейнер, который находится на уровне приложения (возможно, в вашем Global.asax), а затем использовал бы его для разрешения вашего DataContext для этого конкретного сценария.

Я бы не стал надеяться, что все это сохранится в Cache, вместо этого вы можете посмотреть на возможность выполнения этой задачи асинхронно, если можете.

Надеюсь, это поможет.

...