行。因为您只能将功能“装订”到将在未来提供的站点定义中,所以您需要一种方法来激活现有站点上的新功能。
因此,我发现并使用的修复方法如下:
新闻源的默认页面是http://site:80/default.aspx
. 如果您创建一个事件接收器并将其范围用于“站点”并将其部署到全局或该 Web 应用程序,那么它将在基本站点集合上工作。每个个人网站都是一个网站集并具有该功能,但需要在每个个人网站集上激活它。
因此,在 default.aspx 页面中,您放置以下内容,如果该功能尚未激活,它将激活该功能。
<script runat="server" type="text/c#">
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
String sAccount = (((SPWeb)((SPSite)SPContext.Current.Site).OpenWeb()).CurrentUser.LoginName).Split('\\')[1];
String basePersonalURL = "http://site:80/personal/";
String eventReceiverFeatureId = "12345678-1234-1234-1234-1234567890ab";
using(SPSite site = new SPSite(basePersonalURL + sAccount)) {
site.AllowUnsafeUpdates = true;
using(SPWeb web = site.RootWeb) {
web.AllowUnsafeUpdates = true;
try { site.Features.Add(new Guid(eventReceiverFeatureId)); } catch {}
web.AllowUnsafeUpdates = false;
}
site.AllowUnsafeUpdates = false;
}
}
</script>
您还需要编辑 web.config 文件以允许内联代码为此页面运行。希望这可以帮助。