WSS 3.0 提供 Feature 事件類別庫,允許攔截 Feature **安裝至伺服器陣列、新增至虛擬伺服器、啟用、停用、解除安裝** 等生命週期節點。部分為 **Post 事件**(動作提交後觸發)。**無法透過事件取消安裝/解除安裝操作**。
| 類別 | 命名空間 | 用途 |
|---|---|---|
SPFeatureReceiver | Microsoft.SharePoint | 抽象基類,覆寫四大生命週期方法 |
SPFeatureReceiverProperties | Microsoft.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) { }
}
stsadm -o installfeature)後觸發。適合部署資源檔、登錄組態。stsadm -o uninstallfeature)前觸發。適合清理資源。SPFeatureReceiver,覆寫所需方法。gacutil /i 或拖曳至 C:\Windows\Assembly)。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 **不會標記為已啟用**。SPList 是否已存在)再決定建立/略過,**避免重複執行報錯**。properties.Feature.Parent 取得啟用範圍的父容器(SPWeb/SPSite/...),以此為基準建立子物件。ActivationDependencies)。Feature 事件是 SharePoint 方案生命週期管理的核心擴充點,善用之可實現零手工操作的自動化佈建與清理。