Diferencia entre SPSite.Features.Add (...) y SPWeb.Features.Add (...)
-
16-10-2019 - |
Pregunta
He creado una función denominada Feature1. Feature1 se activa en un sitio de SharePoint. Creo un elemento web que contiene el código siguiente.
SPSite site = new SPSite("http://intranet/site1");
SPWeb web = site.OpenWeb();
SPFeatureDefinition feature = SPFarm.Local.FeatureDefinitions("Feature1");
Me resulta necesario modificar el elemento Web para activar Feature1 sólo Sitio1.
usoDebería? site.Features.Add (feature.Id) o web.Features.Add (feature.Id)
¿Cuál es la diferencia entre las dos instrucciones?
Solución
En el modelo de objeto, un SPSite es una colección de sitios, mientras que un SPWeb es un sitio. Sí, es un poco confuso.
Así que si usted tiene una característica que necesita ser activado en el nivel del sitio (no nivel de colección de sitios), entonces usted quiera usar el SPWeb, que el código llama web.
Otros consejos
La diferencia es el alcance de la función, que depende del contenido de la característica. Aquí está un motor de arranque para el material de lectura acerca de esto:
if (feature.Scope == SPFeatureScope.Web)
web.Features.Add(feature.Id)
else if (feature.Scope == SPFeatureScope.Site)
site.Features.Add(feature.Id)
Luis basado en su pregunta ??p>
tengo que modificar el elemento Web para activar Feature1 en Sitio1 única
Se debe utilizar
web.Features.Add(feature.Id);