Event Handler
Event Handler是SharePoint中與文檔庫或列表相關(guān)聯(lián)的事件處理程序,當(dāng)我們對項目進(jìn)行某些操作時,Event Handler就會截獲這個事件,然后相應(yīng)的進(jìn)行操作。功能上比較像數(shù)據(jù)庫中的觸發(fā)器。比如:刪除某個文件時向管理員發(fā)送一個郵件,添加一個列表時進(jìn)行其他操作等等。
和2.0相比,WSS3.0對Event Handler提供了更強(qiáng)大的支持,如:列表,文檔庫,內(nèi)容類型。并且支持同步和異步的操作等。
為SharePoint提供一個Event Handler并不是很費力,主要包括:開啟Event Handler支持,編寫Event Handler程序,向SharePoint中部署Event Handler。接下來逐一說明一下。
開啟Event Handler支持
默認(rèn)情況下是不開啟Event Handler支持的,需要我們手動開啟:進(jìn)入應(yīng)用程序管理---進(jìn)入Web應(yīng)用程序常規(guī)設(shè)置。
開啟事件處理程序:
這樣就完成了對Event Handler開啟的支持。
編寫Event Handler程序
SharePoint的Event Handler其實是一個類,這個類主要繼承WSS中的SPWebEventReceiver,SPEmailEventReceiver,SPListEventReceiver,SPItemEventReceiver,IListEventSink等類,并且重寫相應(yīng)的方法來完成我們的需求。
這里做個簡單的例子,當(dāng)我們刪除一個Items時,向日志文件中添加一條記錄。
直接看代碼:
C# Code復(fù)制內(nèi)容到剪貼板
是不是很簡單,接下來我們按照為WebPart添加密鑰文件的方法,為我們的Event Handler添加密鑰文件,添加的目的我在部署的時候再說。這樣,簡單的Event Handler就完成了。
向SharePoint中部署Event Handler
和WebPart有所不同的是,Event Handler的dll需要放到GAC(Global Assembly Cache)中,而不能放在SharePoint網(wǎng)站的bin文件夾中,所以我們生成的dll必須進(jìn)行強(qiáng)簽名,這也就是上面為什么添加密鑰文件的目的。
GAC的系統(tǒng)路徑為:C:/WINDOWS/assembly,直接將生成的Event Handler dll拖入到這個路徑中即可。
先來看下SharePoint中的情況:
在我們先前創(chuàng)建的網(wǎng)站中,我創(chuàng)建了一個文檔庫的List,并且上傳了一個word文件,我們的Event Handler就是要添加到這里。
接下來就是將這個Event Handler部署到SharePoint中。可以通過代碼的形式,也可以通過Feature的形式。這里介紹下代碼的形式。
創(chuàng)建一個批處理程序(當(dāng)然win程序也可以),添加如下代碼:
代碼很容易,想必大家一看就能明白,找到工程生成的可執(zhí)行文件,運行:
這樣就代表我們的Event Handler發(fā)布成功啦!至此,Event Handler的部署工作也就完成啦!
最后我們來測試下,進(jìn)入文檔庫,刪除那個“LINQ中文教程”word文件。到C:/下看下Log.txt:
OK,我們的Event Handler執(zhí)行了,實現(xiàn)了我們想要的效果。
小結(jié):有關(guān)Event Handler的內(nèi)容就介紹到這里,相信大家認(rèn)真的看一邊就可以很輕松的掌握,當(dāng)然有關(guān)Event Handler的內(nèi)容還不止這些,需要在平時的應(yīng)用中多多積累。
新聞熱點
疑難解答
圖片精選