SPSite site = new SPSite(SPContext.Actuel.Web.Url) vs SPContext.Actuel.Web.Site
Pourquoi certains SharePoint exemples d'utilisation
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
...
}
et non pas simplement?
SPSite site = SPContext.Current.Web.Site;
...
Mise à jour
Je pense que je suis réduit à la question comme suit:
Il semble que je ne devrais pas utiliser SPContent.Current
directement, sauf si je suis certain, que mon code s'exécute à l'intérieur de SharePoint. Mais quand ne serait-ce pas vrai?
Jetez un oeil à une question similaire de moi: sharepoint.stackexchange.com/questions/20192/...
Merci pour le lien. J'ai mis à jour ma question.
Sur les plus gros projets que vous avez parfois des utilitaires externes ne s'exécute pas dans SharePoint. Un autre exemple sont les tests unitaires qui n'est pas également exécuter dans SharePoint. Si vous êtes tout simplement le développement de visual webparts et ne faites pas de test de l'unité - votre code s'exécute dans SP.
lorsque fréquemment utilisé dans le code il semble y avoir un problème de performance avec la nouvelle SPSite/SPWeb approche
Je me demandais: si je suis à la programmation d'un HttpModule - est que l'exécution de dans SharePoint? Il ferait partie de la demande et tout, mais c'est un peu plus à l'IIS/niveau de l'Application Web - seulement intéressés par votre avis/observation/etc
Merci pour le lien. J'ai mis à jour ma question.
Sur les plus gros projets que vous avez parfois des utilitaires externes ne s'exécute pas dans SharePoint. Un autre exemple sont les tests unitaires qui n'est pas également exécuter dans SharePoint. Si vous êtes tout simplement le développement de visual webparts et ne faites pas de test de l'unité - votre code s'exécute dans SP.
lorsque fréquemment utilisé dans le code il semble y avoir un problème de performance avec la nouvelle SPSite/SPWeb approche
Je me demandais: si je suis à la programmation d'un HttpModule - est que l'exécution de dans SharePoint? Il ferait partie de la demande et tout, mais c'est un peu plus à l'IIS/niveau de l'Application Web - seulement intéressés par votre avis/observation/etc
OriginalL'auteur Jan Aagaard | 2011-11-08
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil sur les meilleures pratiques de la documentation sur l'élimination des objets dans SharePoint 2010 de Microsoft, cependant il y a des points de vue opposés.
Il y a quelques points clés pour SharePoint projets:
using
)Vous pourriez avoir des problèmes de cohérence avec avec vos multiples SP.. objets.
À la fin
SPSite site = SPContext.Current.Web.Site;
est bien dans certains cas, mais vous n'avez pas de contrôle sur cesite
objet qui pourrait être le problème. Si vous allez pournew SPSite(...)
vous aurez toujours votreSPSite
et pas quelque chose de SharePoint créé et géré pour vous.Personnellement j'ai presque toujours aller pour le
using
structure, de sorte que tous les objets sont disposés correctement par la suite. Sinon j'utiliseSPContext.Current.Web
sans l'éliminer.OriginalL'auteur Dennis G
Cela dépend du contexte dans lequel votre code s'exécute. Par exemple, vous devez créer un nouveau
SPSite
exemple, si vous exécutez dans unRunWithElevatedPrivileges
bloc.OriginalL'auteur Nemanja Trifunovic
Dennis G est correcte. L'élimination de la SPSite/SPWeb/etc est important, mais assurez-vous de ne pas jeter les objets qui vous sont fournis par l'API directement. C'est subtil mais essentiel, sinon votre réponse ne sera jamais produite, ou à cause même d'abandon de thread situations.
Dans mon expérience, si j'ai besoin d'une information rapide sur la SPSite ou SPWeb bien que je suis sûr à la disposition du contexte de l'utilisateur (que ce soit un gestionnaire de contenu utilisateur autorisé ou anonyme), puis à l'aide SPContext.Actuel.* l'objet est grand. Sinon, utilisez le RunWithElevatedPriveleges méthode pour envelopper votre code et à l'intérieur que lambda a le schéma suivant:
OriginalL'auteur Roman