Frage

Hallo, ich versuche ein Listenelement abzurufen und möchte wissen, ob dies eine gute Vorgehensweise ist.

   SPSite spsite = new SPSite(SPContext.Current.Web.Url);
                    SPWeb spWeb = spsite.RootWeb;
                    SPList spList = spWeb.Lists.TryGetList("MyList");
//here is the code to fetch the values...

Wir haben 1 Websitesammlung mit 50 Unterwebsites und mehr Unterwebsites darin.Meine Frage ist;

Angenommen, ich befinde mich auf einer der Unterwebsites unter der Unterwebsitenummer 10 und dieser Code wird ausgeführt. Nimmt er dann immer noch die Stammwebliste auf oder gibt einen Fehler aus?

Ich bin verwirrt wegen des Wertes des SPContext .Aktuell.Web.Url ist die aktuelle URL am jeweiligen Standort.Würde der Code dann noch funktionieren?

War es hilfreich?

Lösung

Ihr Erstellen eines neuen Standorts, der nicht angeordnet ist, spcontext.current.web.url erzeugt nur die String-URL.

Richtige Weise: generasacodicetagpre.

Es ist nicht notwendig, das SPWEB zu entsorgen, wie Sie es nicht bemerken, dass es keine Neue gibt.Es verwendet das neue SPSITE-Webobjekt.Wenn Sie entsorgen, würde es zu Fehlern auf ULS führen:

erkannte Verwendung von Sprequest für zuvor geschlossene SPWEB-Objekt.Bitte Schließen Sie SPWEB-Objekte, wenn Sie mit allen Objekten fertig sind sie aber nicht vorher.

Eine andere Möglichkeit, den Code zu verwenden, wäre: generasacodicetagpre.

Wie Sie sehen, müssen Sie nicht genutzt werden, da es den aktuellen Site-RootWeb-Objekt verwendet, das nicht entsorgt werden sollte, und weniger Code / Systemressourcen!

Andere Tipps

Wie von @Robert hervorgehoben, wird es das Root-Web aufnehmen.Sie müssen jedoch nicht entsorgen SPWeb objekt abgerufen von SPSite.RootWeb Eigenschaft.Sie können auch direkt die SPSite objekt aus SPContext SPSite spsite = SPContext.Current.Site; und muss daher nicht entsorgt werden, anstatt eine neue zu instanziieren, die explizit entsorgt werden muss.

es wird das rootweb aufnehmen.

Bitte denken Sie daran, den SPSITE zu entsorgen, wenn Sie dies getan haben, wenn Sie keine "Verwendung-Anweisung" verwenden: generasacodicetagpre.

Sie können verwenden SPContext.Current.Site.Url, während Sie ein SPSite-Objekt in Ihrem Code erstellen, verwenden Sie dann site.OpenWeb(), wodurch das Root-Web angezeigt wird (da das SPSite-Objekt mit der Site-URL erstellt wird).Immer besser zu benutzen using gegenstände zu entsorgen.

using (SPSite site=new SPSite(SPContext.Current.Site.Url))
            {
                using(SPWeb web=site.OpenWeb())//always gets you the root web
                {

                }
             }

Sehen Sie diesen Blog über Bewährte Methode für SPDisposeCheck.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top