2009-07-29 69 views
2

有沒有辦法將.NET程序集加載到沙箱環境中,該沙箱環境也受到自定義方式的限制?我知道你可以在不同的AppDomain中運行一個Assembly,但是你能限制它不能做某些你想要限制的事情嗎?如何使用Sandbox在.NET中創建插件模型?

例如:我希望能夠在ASP.NET應用程序的單獨程序集中加載插件(簡單,只是通過特定接口定義),但我只希望插件能夠訪問某些數據訪問層組件,並且不能直接連接到任何數據庫。我在考慮讓一個應用程序實例託管多個客戶端數據的情況,我只希望插件能夠訪問當前登錄的特定客戶端/用戶的數據。

任何人都可以如何做到這一點的想法?

我發現下面的問題就在這裏等如何在沙箱中加載程序集,但它不談論加入沙盒的任何自定義限制:

Loading Assemblies from a .Net Application in a 'Sandbox Environment'

更新:它看起來就像你可以在調用「AppDomain.CreateDomain」時設置一個非常具體的「PermissionSet」,但我不確定我需要設置什麼權限來允許/禁止上述指定權限。還有這篇文章在MSDN上:http://msdn.microsoft.com/en-us/library/bb763046.aspx

另外,我要做到這一點在.net 2.0/3.5

任何其他的想法,不是使用System.AddIn其他?

+0

對不起,使用.NET 1.0無法做到這一點。 – 2009-07-29 00:20:53

+0

約翰桑德斯,恩......我沒有指定版本,想通的人會承擔至少.NET 2.0。無論如何,我添加了我正在尋找的問題的版本。 – 2009-07-29 03:38:30

回答

5

你可以使用System.AddIn框架(這是一個有點複雜,簡單的任務在我看來),或者創建自定義的AppDomain,您需要哪些權限(最小集合),你可以閱讀here

在3.5中加入

外接程序框架公平。此外,你可以谷歌視覺插件,生成存根,這使得使用這個解決方案更容易。