【问题标题】:How to create a Plugin Model in .NET with Sandbox?如何使用 Sandbox 在 .NET 中创建插件模型?
【发布时间】: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


【解决方案1】:

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

AddIn 框架是在 3.5 中添加的。此外,您可以搜索生成存根的可视化插件,这使得使用此解决方案更加容易。

【讨论】:

  • 我完全忘记了 System.AddIn;我记得当 .NET 3.5 第一次问世时听说过。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 2011-04-29
  • 2016-02-08
  • 2017-11-23
相关资源
最近更新 更多