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

Chr*_*ann 3 .net plugins assemblies sandbox

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

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

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

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

在"沙箱环境"中从.Net应用程序加载程序集

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

此外,我希望在.NET 2.0/3.5中执行此操作

除了使用System.AddIn之外的任何其他想法?

Mar*_*uła 5

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

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