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.

uso

Debería? site.Features.Add (feature.Id) o web.Features.Add (feature.Id)

¿Cuál es la diferencia entre las dos instrucciones?

¿Fue útil?

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:

http://weblogs.asp.net/soever/archive/2007/05/03/sharepoint-features-elements-scope-and-other-info.aspx

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

tengo que modificar el elemento Web para activar Feature1 en Sitio1 única

Se debe utilizar
web.Features.Add(feature.Id);

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