このSPWebを破棄する必要がありますか?
-
27-10-2019 - |
質問
誰かが私を助けてくれることを願っています。SPContextから現在のサイトのルートWebを取得する必要があります。次の方法で簡単に行えます ジェネラコディセタグプレ
ここSPContext.Current。 Site .RootWebにあるSPSiteオブジェクトは破棄すべきではないという考えには満足していますが、SPSiteから取得したSPWebオブジェクトについてはどうでしょうか。。SPSiteが破棄されると、rootweb SPWebは破棄されますか?それとも自分で処分する必要がありますか?
解決
SPSite.RootWebへの呼び出しは破棄しないでください。SPSiteを破棄すると、RootWebも破棄されます。
SPDisposeCheckにはバグがあり、破棄するとフラグが立てられます。破棄しない場合は(どちらの方法でも気になります!)、これを解決する方法を詳しく説明しましたこのブログ投稿では、昇格された特権ブロックでSPDisposeCheckIgnore属性を使用できないため。
他のヒント
いいえ、すべきではありません。自分が管理しているオブジェクトのみを破棄する必要があります。コンテキストはSharePointによって作成されたものであるため、他のオブジェクトがこれに依存している可能性があるため、これを破棄しないでください。
このオブジェクトのプロパティからSPWebの独自のインスタンスを作成する場合は、破棄する必要があります。つまり。 ジェネラコディセタグプレ
これは、SharePointオブジェクトを破棄するためのベストプラクティスに関する記事です。
http://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx
通常、using句ではSPSiteとSPWebを使用する必要があります。 ジェネラコディセタグプレ
これにより、作業が終了した後、SPWebオブジェクトが自動的に正しく解放されます。