2010-08-29 210 views
1

我試圖通過代碼激活SharePoint功能。 SPWeb.Features.Add(新GUID(「XXXXXX」)SharePoint 2007:通過代碼不激活功能激活事件激活功能

上面這行寫在我讀農場所有站點和激活每個站點上的特徵featureinstalled事件處理程序。

但激活後,它不會調用/觸發功能激活的事件處理程序,我有一些代碼可以運行。有人可以建議如何觸發該事件。

+1

爲什麼不在Feature.xml文件的Feature標籤中使用ActivateOnDefault屬性,而不是試圖從FeatureInstalled事件中的代碼激活它? – 2010-08-29 05:01:44

+0

謝謝,它可以解決功能安裝期間的問題。但讓我說我取消部署(retractsolution)並再次部署。因爲在取消部署之前我沒有停用該功能,所以它會默認激活該功能,並且它不會觸發功能激活(我將無法通過stsadm停用該功能,因爲它接受URL,並且我無法提供URL,因爲它已完成農場的每個站點也不允許使用powershell)。所以我有一個類似的代碼在功能中,以便停用每個站點的功能,並且功能中的某些代碼已被激活(同樣的問題再次) – sssreddy 2010-08-29 05:40:55

+1

這將工作 - > stsadm -o deactivatefeature -n myfeaturename -allcontenturls 恕我直言,你的設計是什麼造成了這個問題。與支持的方法相對應的設計不應該創建這樣的Catch-22情況 – 2010-08-29 06:10:17

回答

0

您是否在尋找功能裝訂?http://blogs.msdn.com/b/cjohnson/archive/2006/11/01/feature-stapling-in-wss-v3.aspx或者是否有規定要求?您的用戶是否可以創建網站?

也在什麼範圍內部署該功能?如果您將其範圍擴展到農場或Web應用程序,它將在您的所有站點中激活/停用。

+0

這是一個作爲功能部署的Web部件。用戶沒有權限創建網站/子網站。由於這種鎖定的安全模型,用戶無法激活一個特性(我也在研究如何僅向最終用戶授予此權限)。由於這是一個web部件,它在web範圍內被depolyed,我不能在農場範圍進行部署(正如微軟所說的)。這個webpart將可用於農場的所有站點。對於我們創建的未來網站,它將在配置過程中默認激活。 – sssreddy 2010-08-30 05:29:14

+0

您需要將功能的範圍更改爲網站集(範圍=網站)。當您使用STSADM -o deploysolution時,您需要指定頂級Site Collection或-allcontenturls。部署完成後,只需轉到網站根目錄中的網站集功能頁面並激活該功能即可。它應該出現在任何地方。 – Junx 2010-08-31 12:52:33