2014-01-07 4 views
1

Есть много решений для моей реальной проблемы, и я не буду вдаваться в подробности здесь. Хотя я не совсем уверен в одном вопросе.Sharepoint одноразовые объекты в HttpContext.Current.Items

Если бы я предположительно хранил экземпляр объекта SPWeb в HttpContext.Current.Items ... он автоматически удалялся в конце запроса (поскольку SharePoint имеет некоторые встроенные механизмы для размещения таких объектов) или я нужно самостоятельно утилизировать объекты, используя пользовательский HttpModule или global.asax?

Я предполагаю, что нет никакой магии, и я должен сделать это сам, не так ли? мне было интересно, потому что, конечно, SharePoint делает в основном то же самое ... (HttpContext.Current.Items [ «HttpHandlerSPWeb»] ...)

ответ

0

Вы можете прочитать лучшие практики об утилизации SPWeb объекта here. На одном предмете есть много других статей. Короче говоря:

  1. Если вы создаете объект SPWeb себя (то есть не используя SPContext.Current), необходимо утилизировать его.

  2. Удалите объект SPWeb, как только он вам не понадобится.

Из моего опыта кэширование объекта SharePoint не является хорошим способом (даже в контексте запроса), поскольку это может привести к утечке памяти.

+0

Я знаю все это. Вот почему я спросил, есть ли какая-то процедура очистки, которая предоставляет все объекты в HttpContext.Current.Items - как я уже сказал, SP использует это сам и, очевидно, должен что-то убрать. – lapsus

+0

Возможно, он хранит информацию SPContext.Current. Но я не знаю, как он его очищает, и я не буду рассчитывать на это. На мой взгляд, лучший способ - очистить вручную. Конечно, вы можете найти детали реализации с помощью Reflector, но это может занять много времени. –

Смежные вопросы