2009-12-14 64 views
3

是否可以將包含自定義SharePoint列表功能的事件處理程序(因此,依賴於Microsoft.SharePoint程序集的類)的程序集成功部署到Web應用程序的垃圾箱而不是GAC?將SharePoint事件接收器部件部署到Web應用程序BIN

這樣做的選項肯定會出現在我的要素的manifest.xml文件中的XML標記中。但是,我已經看到幾個爲程序集部署CAS策略的參考資料是必須的,並且很少有關於如何成功實現此目的的程序集的需求,該程序集需要訪問SharePoint對象模型等特權。我也看到了一些討論,指出由於CAS的困難/問題,GAC幾乎是一項要求。

我已經能夠將程序集實際部署到文件夾。然而,安全問題一直是一個很大的障礙。我能夠讓我的程序集運行(而不是簡單地在異常中出錯)的唯一方法是將web.config的信任級別提升到<trust level="Full" originUrl="">,這將不會在我的環境中飛行。我希望能夠在繼續與CAS進一步搏鬥之前驗證我想要做的事。

如果這是可能的,如果有人有指導或資源,可以幫助我修改我的功能部署我的事件處理程序以這種方式,我會很感激。

回答

1

不要提升web.config的信任級別 - 非常大的錘子可以解決一個小問題。您必須在WSP中打包自定義CAS策略,以授予您的程序集更高的權限,以便web.config爲其提供更高的權限。

-Oisin

1

一種方式來處理,這是殺青的日誌記錄,記錄時引發的各種異常,然後手動寫一個CAS策略。這是一種非常可能的方法,而且很痛苦。

預先知道任何給定方法或類的所有權限需求。如果是這樣,應該可以編寫一個工具來靜態分析代碼和相關程序集並組成所需的CAS文件。不幸的是,我不知道有任何工具可以做到這一點。

對於什麼是值得的,GAC'ing你的集會似乎比增加信任級別更「輕」。

1

如果我的問題得到了解決,您希望將一個列表事件接收器部署到Web應用程序的BIN目錄中。

這在SharePoint 2010中是不可能的,但我不知道它是否在MOSS 2007上受支持(我猜它也不被支持)。

此行爲是設計使然,因爲SharePoint內部使用System.Reflection.Assembly.Load()方法加載事件接收器程序集。 Load()方法只能用於完全限定的程序集名稱,因此需要程序集駐留在全局程序集緩存中。

相關問題