Domanda

E 'necessario disporre del sito e oggetti Web nel seguente codice? Se sì, come faccio a fare questo?

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Dim site As New SPSite(SPContext.Current.Web.Url)
    Dim web As SPWeb = site.OpenWeb()
    web.AllowUnsafeUpdates = True
    Dim lPmr As SPList = web.Lists("NombreList")
    Dim oQuery As New SPQuery()
    Dim itemCollectionPMR As SPListItemCollection

    oQuery = New SPQuery()
    oQuery.Query = ""
    itemCollectionPMR = lPmr.GetItems(oQuery)

 ........        

 End Sub
È stato utile?

Soluzione

James e Toni sono assolutamente corrette, ma hanno perso l'ovvio IMHO -. Il codice ha un difetto più profondo e se risolto questo poi lo smaltimento degli oggetti non è necessario

Si dovrebbe (ove possibile) utilizzare lo SPWeb e SPSite oggetti da SPContext -. Che sono già stati creati per voi dall'infrastruttura web part di SharePoint e il suo più efficiente utilizzare questi che creare il proprio

Nel codice in realtà si sta già utilizzando uno di loro per ottenere l'URL corrente ragnatele, ma poi la creazione del sito e web a prescindere -. Piuttosto inefficiente e non è necessario

Così, invece di

Dim site As New SPSite(SPContext.Current.Web.Url)
Dim web As SPWeb = site.OpenWeb()

Si deve usare solo

Dim web As SPWeb = SPContext.Current.Web

Se si utilizza SPSite / SPWeb da SPContext questi piuttosto che creare il proprio allora si dovrebbe non gettare di loro (non avete creato loro, in modo da lasciarli soli)

MSDN - Best Practices: Utilizzo monouso Windows SharePoint Services Objects

oggetti SPContext vengono gestiti dal framework di SharePoint e non dovrebbe essere esplicitamente disposto nel codice. Questo è vero anche per la SPSite e SPWeb oggetti restituiti da SPContext.Site, SPContext.Current.Site, SPContext.Web e SPContext.Current.Web.

Altri suggerimenti

Sì, è necessario disporre SPWebs create attraverso SPSite.OpenWeb ().

di disporne, web.Dispose semplice chiamata () quando hai finito nel metodo.

Si potrebbe anche utilizzare l'istruzione Utilizzando nello stesso senso, senza la necessità di chiamare direttamente Dispose ()

Using site As New SPSite(SPContext.Current.Web.Url)
  Using web As SPWeb = site.OpenWeb()
    web.AllowUnsafeUpdates = True
    Dim lPmr As SPList = web.Lists("NombreList")
    Dim oQuery As New SPQuery()
    Dim itemCollectionPMR As SPListItemCollection

    oQuery = New SPQuery()
    oQuery.Query = ""
    itemCollectionPMR = lPmr.GetItems(oQuery)
  End Using
End Using

1 James

Si dovrebbe anche cercare di utilizzare SharePoint Smaltire Checker nei vostri progetti per analizzare il codice per potenziali perdite di memoria e di applicare le migliori pratiche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top