【发布时间】:2010-11-14 21:48:00
【问题描述】:
有没有办法将 .NET 程序集加载到同样受自定义方式限制的沙盒环境中?我知道您可以在不同的 AppDomain 中运行程序集,但是您可以限制它执行您想要限制的某些事情吗?
例如:我希望能够在 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 之外还有其他想法吗?
【问题讨论】:
-
抱歉,.NET 1.0 无法做到这一点。
-
John Saunders,嗯...我没有指定版本,估计人们会假设至少 .NET 2.0。无论如何,我在问题中添加了我正在寻找的版本。
-
除了使用 System.AddIn 之外还有什么其他想法吗?
标签: .net assemblies plugins sandbox