ASP.NET通过汇编改变每页的信任级别?

luk*_*fer 8 c# asp.net full-trust appdomain partial-trust

我有两个Web应用程序(预编译站点),一个是第一方,将以完全信任的方式运行.另一个是第三方,应该部分信任(或具有特定权限).

TrustedAssembly.Web.Pages.MyPage应该在完全信任默认的AppDomain中运行. UntrustedAssembly.Web.Pages.SomePage应该在部分信任AppDomain中运行.

此外,如果TrustedAssembly.Web.Pages.MyPage动态加载UntrustedAssembly.Web.Controls.SomeControl可以在部分信任和/或具有特定权限的情况下运行控件,而页面在完全信任下运行?

反之亦然,例如UntrustedAssembly.Web.Controls.SomePage动态加载TrustedAssembly.Web.Controls.MyControl,当页面在部分信任下运行时,是否可以完全信任地运行控件?

更新/仅供参考:这是.NET 4

Dav*_*bbo 5

这样做可能有点棘手.以下是两种可能的思路:

第一种是在中型信任中运行应用程序,但是要将您想要运行的任何内容完全置于GAC中,以及您希望在bin中部分信任的内容中运行.

请注意,在"反之亦然"方案中,受信任控件可能需要在能够执行完全信任操作之前执行安全性"断言".例如

(new SecurityPermission(SecurityPermissionFlag.UnmanagedCode)).Assert();
Run Code Online (Sandbox Code Playgroud)

第二种思路是以完全信任的方式运行应用程序,但随后使用自定义Evidence加载要在Medium信任中运行的任何程序集.例如

var evidence = new Evidence();
// Initialize the Evidence
Assembly.LoadFrom(path, evidence);
Run Code Online (Sandbox Code Playgroud)

但请注意,正确设置Evidence对象不适合胆小的人,而且我不确定我会不会那样做.

不是一个完整的答案,但希望有一些想法可以导致一个:)