如何使用Sandbox在.NET中创建插件模型?

时间:2009-07-29 00:08:40

标签: .net assemblies plugins sandbox

有没有办法将.NET程序集加载到也以自定义方式限制的Sandbox环境中?我知道你可以在不同的AppDomain中运行程序集,但是你可以限制它能够做你想要限制的某些事情吗?

例如:我希望能够在ASP.NET应用程序内的单独程序集中加载插件(简单,只是通过特定接口定义),但我只希望插件能够访问某些数据访问层组件,无法直接连接到任何数据库。我正在考虑让一个应用程序实例托管多个客户端数据的情况,我只希望该插件能够访问当前登录的特定客户端/用户的数据。

任何人对如何做到这一点都有任何想法?

我在SO上找到了关于如何在Sandbox中加载程序集的问题,但它没有讨论添加Sandbox的任何自定义限制:

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

更新:看起来你可以在调用“PermissionSet”时设置一个非常具体的“AppDomain.CreateDomain”,但我不确定我需要设置哪些权限允许/不允许上述指定的权限。 MSDN上还有这篇文章:http://msdn.microsoft.com/en-us/library/bb763046.aspx

另外,我希望在.NET 2.0 / 3.5

中执行此操作

除了使用System.AddIn?

之外的任何其他想法

1 个答案:

答案 0 :(得分:5)

你可以使用System.AddIn框架(在我看来这对于更简单的任务来说有点复杂)或创建自定义AppDomain,你需要什么权限(最小设置),你可以阅读here

Addin framework在3.5 afair中添加。此外,您可以谷歌到生成存根的可视插件,这使得使用此解决方案更容易。