Se produjo un error en la etapa de despliegue 'Activar funciones': Referencia de objeto no establecida en una instancia de un objeto: Error del receptor de función

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/109937

Pregunta

i creteed una parte web visual en SP 2013. Necesita una lista de SHAREPOINT.Así que escribió por debajo del código en la parte web característica del receptor. Cuando despliegue la solución, obtengo un error, dice que se produzca un error en el paso de despliegue 'Activar funciones': la referencia del objeto no se establece en una instancia de un objeto.Establecí ActivateDefault="False" y SenwayForceInstall="True". Echa un vistazo a mi archivo de manifiesto.

<Feature xmlns="http://schemas.microsoft.com/sharepoint/" Title="SharePointProject1 Feature1" ActivateOnDefault="FALSE" AlwaysForceInstall="TRUE" Id="8f7163d5-6c65-40d8-9045-8f74192f07d7" ReceiverAssembly="SharePointProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9c2f0c3a8e22f6a0" ReceiverClass="SharePointProject1.Features.Feature1.Feature1EventReceiver" Scope="Site">
  <ElementManifests>
    <ElementManifest Location="VisualWebPart1\Elements.xml" />
    <ElementFile Location="VisualWebPart1\VisualWebPart1.webpart" />
  </ElementManifests>
</Feature>

Este es mi código Feature1EventReceiver.

SPWeb spWeb = properties.Feature.Parent as SPWeb;
            SPList laptopList = spWeb.Lists["Laptops"];
            if (laptopList != null)
            {
                laptopList.Delete();

            }
            SPListCollection lists = spWeb.Lists;
            lists.Add("Laptops", "The Laptops", SPListTemplateType.GenericList);
            laptopList = spWeb.Lists["Laptops"];


            laptopList.Fields.Add("Name", SPFieldType.Text, true);
            laptopList.Fields.Add("Model", SPFieldType.Text, true);
            laptopList.Fields.Add("Image", SPFieldType.URL, false);

Puedo desplegarlo si solo tengo por debajo del código

 SPWeb spWeb = properties.Feature.Parent as SPWeb;

¿Fue útil?

Solución

La parte web visual debe incluirse en la función Sitio al alcance del sitio, ya que los propiedades de resultado. PREMIENTE.Feature.Parent es un objeto SPSITE.Debe verificar el alcance de la función y usar el código a continuación si el alcance es el sitio.

SPSite site = properties.Feature.Parent as SPSite;
if (site != null){
    SPWeb web = site.RootWeb;
    SPList laptopList = web.Lists["Laptops"];
    ...
}

Otros consejos

Web.lists [] causará una excepción si la lista no está allí.

Use trygetlist en lugar

me funcionó después Cambió el nivel de alcance de la característica desde sitio a web

 ingrese la descripción de la imagen aquí

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