Pregunta

Mientras pruebe mi solución, recibo un error en la activación de la función:

Uso detectado de SPREQUEST para el objeto SPWEB cerrado previamente.Cierre los objetos SPWEB cuando haya terminado con todos los objetos obtenidos de ellos, pero no antes.

Esta es la forma en que estoy recibiendo SPWEB:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    using (SPWeb web = properties.Feature.Parent as SPWeb)
    {
        ClassOfMine.doYourStuff(web);
    }
}

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

¿Qué tal;

ADVERTENCIA: Su función debe ser scoped como web para que funcione obviamente;)

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
  // No need to dispose the web istance, as indicated in the "Do not dispose" guidance
  SPWeb web = (SPWeb) properties.Feature.Parent; // added semicolon            

  ClassOfMine.doYourStuff(web);

}


No usando la característica:

Si no, use el SPCONTEXT para obtener la web raíz

SPContext.Current.Site.RootWeb

o - para la web actual

SPContext.Current.Web

o - para una URL web específica

SPContext.Current.Site.OpenWeb("Website_URL"))


Para usar arriba en función, deberías usar las propiedades:

Utilice las propiedades para obtener el sitio para obtener el rootweb

SPSite site = properties.Feature.Parent as SPSite;
using (SPWeb web = site.RootWeb)
{

}

o - para la web actual

SPWeb web = properties.Feature.Parent as SPWeb;

o - para una URL web específica

SPSite site = properties.Feature.Parent as SPSite;
using (SPWeb web = site.OpenWeb("Website_URL"))
{

}

Otros consejos

estás haciendo bien.Solo el alcance de la característica debe ser web.El atributo "padre" es siempre el objeto del alcance de la característica.

También está dispuesto el objeto con el uso.

El único problema con SPCONTEXT es que no puede activar la función de PowerShell, ya que no hay un contexto HTTP.

Licenciado bajo: CC-BY-SA con atribución
scroll top