首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WSS 3.0 SDK 技術詳解:Feature 事件機制——SPFeatureReceiver 生命週期事件與部署實作

     編輯:關於.NET

Feature 事件總覽

WSS 3.0 提供 Feature 事件類別庫,允許攔截 Feature **安裝至伺服器陣列、新增至虛擬伺服器、啟用、停用、解除安裝** 等生命週期節點。部分為 **Post 事件**(動作提交後觸發)。**無法透過事件取消安裝/解除安裝操作**。

核心類別

類別命名空間用途
SPFeatureReceiverMicrosoft.SharePoint抽象基類,覆寫四大生命週期方法
SPFeatureReceiverPropertiesMicrosoft.SharePoint提供事件屬性存取:Feature 實例、定義、父物件(SPWeb/SPSite/SPWebApplication/SPWebService)

四大生命週期事件方法

public abstract class SPFeatureReceiver
{
    public virtual void FeatureInstalled(SPFeatureReceiverProperties properties) { }
    public virtual void FeatureUninstalling(SPFeatureReceiverProperties properties) { }
    public virtual void FeatureActivated(SPFeatureReceiverProperties properties) { }
    public virtual void FeatureDeactivating(SPFeatureReceiverProperties properties) { }
}
  • FeatureInstalled:Feature 組件部署至伺服器陣列(stsadm -o installfeature)後觸發。適合部署資源檔、登錄組態。
  • FeatureUninstalling:Feature 從伺服器陣列移除(stsadm -o uninstallfeature)前觸發。適合清理資源。
  • FeatureActivated:Feature 在特定範圍(Farm/WebApp/Site/Web)啟用時觸發。**最常用**:建立列表、欄位、內容類型、啟用功能、設定權限。
  • FeatureDeactivating:Feature 停用前觸發。適合移除功能、還原設定,**謹慎刪除資料**(可能影響使用者資料)。

實作與註冊步驟

  1. 建立類別繼承 SPFeatureReceiver,覆寫所需方法。
  2. 編譯簽署強名稱,部署 DLL 至 **GAC**(gacutil /i 或拖曳至 C:\Windows\Assembly)。
  3. 在 Feature.xml <Feature> 元素頂層註冊:
    <Feature Id="5E88AE4E-2ECB-4CC5-B9EC-9019250F5BC8"
        Title="Knowledge Base Infrastructure"
        Scope="Site"
        ReceiverAssembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdef1234567890"
        ReceiverClass="MyNamespace.MyFeatureReceiver"
        xmlns="https://schemas.microsoft.com/sharepoint/">
      </Feature>

關鍵實作考量

  • 異常處理:FeatureActivated 拋出異常 → 使用者收到錯誤、Feature **不會標記為已啟用**。
  • 冪等性:使用者可能強制重新啟用已啟用 Feature。程式碼必須檢查物件是否存在(如 SPList 是否已存在)再決定建立/略過,**避免重複執行報錯**。
  • 父物件存取:properties.Feature.Parent 取得啟用範圍的父容器(SPWeb/SPSite/...),以此為基準建立子物件。
  • 權限:事件接收器在啟用使用者的安全性內容下執行,需具備對應權限(如建立列表需「管理列表」權限)。

典型應用場景

  • Feature 啟用時自動佈建列表、網站欄、內容類型、工作流關聯。
  • Feature 啟用時設定網站屬性、快取、導航節點。
  • Feature 停用時移除自訂動作、清理暫存資料、停用計時器工作。
  • 跨方案相依協調:父 Feature 啟用時自動啟用子 Feature(配合 ActivationDependencies)。

Feature 事件是 SharePoint 方案生命週期管理的核心擴充點,善用之可實現零手工操作的自動化佈建與清理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved