Difference betweeen SPSite.Features.Add(…) and SPWeb.Features.Add(…)
-
16-10-2019 - |
문제
I have created a Feature named Feature1. Feature1 is activated in a SharePoint site. I create a Web Part that contains the following code.
SPSite site = new SPSite("http://intranet/site1");
SPWeb web = site.OpenWeb();
SPFeatureDefinition feature = SPFarm.Local.FeatureDefinitions("Feature1");
I need to modify the Web Part to activate Feature1 in Site1 only.
Should I use? site.Features.Add(feature.Id) or web.Features.Add(feature.Id)
Whats the difference between the two instructions?
해결책
In the object model, an SPSite is a Site Collection, whereas an SPWeb is a site. Yes, it is a little confusing.
So if you have a feature that needs to be activated at the Site level (not Site Collection level), then you want to use the SPWeb, which your code calls web.
다른 팁
The difference is the scope of the Feature, which depends on the content of the feature. Here's a starter for reading material about this:
if (feature.Scope == SPFeatureScope.Web)
web.Features.Add(feature.Id)
else if (feature.Scope == SPFeatureScope.Site)
site.Features.Add(feature.Id)
Luis based on your question
I need to modify the Web Part to activate Feature1 in Site1 only
You should use
web.Features.Add(feature.Id);