appdomain相关内容
将从属沙盒域的 ApplicationBase 设置为与托管域相同的路径有什么确切的安全含义? 我发现 MSDN 指南指出 ApplicationBase 对于从属域应该不同“如果 ApplicationBase 设置相同,则部分信任应用程序可以让托管应用程序加载(作为完全信任)它定义的异常,因此利用它"(第 3 页): http://msdn.microsoft.com/en-us/
..
我有一个服务应用程序,它在用于长时间运行的任务的过程中创建 AppDomain.我一直通过将它们存储在具有唯一 ID 的 Hashtable 中来跟踪它们. 任务完成后,服务应用会卸载分配给该任务的 AppDomain,然后将其从 appdomain Hashtable 中删除. 纯粹从健全性检查的角度来看,有没有办法可以查询 CLR 以查看创建应用程序域仍在加载哪些应用程序域(即,我
..
我的应用程序应该可以由用户在 C# 中编写脚本,但是用户的脚本应该在受限的 AppDomain 中运行以防止脚本意外造成损坏,但我无法真正让它工作,因为我对 AppDomains 的理解令人遗憾有限,我真的不知道为什么. 我目前尝试的解决方案基于此答案https://stackoverflow.com/a/5998886/276070. 这是我的情况的模型(除了驻留在强命名程序集中的
..
在我的 ASP.NET 应用程序中,我试图添加另一个目录以将其中的 DLL 进行阴影复制. 我发现允许 m 执行此操作的唯一方法是 AppDomain.CurrentDomain.SetShadowCopyPath. 然而,这个方法被标记为Obsolete.MSDN有这个说法 SetShadowCopyPath(String path) 消息:AppDomain.SetShado
..
我正在尝试执行以下操作: 下载包含我需要执行的程序集的字节数组. 在新的应用程序域中从此程序集中加载一个对象并在该对象上执行方法 这是我尝试将程序集加载到新应用程序域中的代码: 公共对象 Execute(byte[] agentCode){var app = AppDomain.CreateDomain("MonitoringProxy", AppDomain.CurrentDo
..
目标:我需要以非常有限的权限在 AppDomain 中运行一些代码 - 它应该无法访问任何花哨或不安全的东西,除了少数我在别处定义的辅助方法. 我所做的:我正在创建一个具有所需基本权限的沙盒 AppDomain,并创建一个代理对象,该对象运行代码: static AppDomain CreateSandbox(){var e = 新证据();e.AddHostEvidence(new Zo
..
好的,所以我有一个 MAF 应用程序,它在单独的应用程序域中加载每个插件.这非常适合我的需要,因为它允许我在运行时动态卸载和重新加载我的插件. 问题是,我需要能够在子应用程序域中处理一个未处理的异常,捕获它,然后让该应用程序域优雅地失败而不取消父应用程序域 我该怎么做?这似乎是一项微不足道的任务,也是使用独立应用程序域的主要好处之一... 解决方案 我认为我对这个类似问题的回答
..
我有一些 .NET 代码需要在单独的 AppDomain 中运行,并且一切顺利,除非调用 COM 组件. 为了说清楚,我写了一个非常简单的repro如下: AppDomain ap = AppDomain.CreateDomain("newap");ap.DoCallBack(() =>{//GroupPolicyObject 来自程序集 microsoft.grouppolicy.manag
..
我已经成功构建了一个插件机制,我可以在单独的 AppDomain 中创建 UI 控件,并将它们显示为主 AppDomain 中表单的一部分. 这些 UI 控件执行自己的数据加载,因此当我打开一个表单时,会创建大约 10 个不同的插件,每个插件都需要加载其数据. 同样,如果我同步执行,这一切都很好,但我想在每个插件中使用 async/await 模式.我的刷新方法如下所示: prote
..
我有一些 .NET 代码需要在单独的 AppDomain 中运行,并且一切顺利,除非调用 COM 组件. 为了说清楚,我写了一个非常简单的repro如下: AppDomain ap = AppDomain.CreateDomain("newap");ap.DoCallBack(() =>{//GroupPolicyObject 来自程序集 microsoft.grouppolicy.manag
..
在我的 ASP.NET 应用程序中,我试图添加另一个目录以将其中的 DLL 进行阴影复制. 我发现允许 m 执行此操作的唯一方法是 AppDomain.CurrentDomain.SetShadowCopyPath. 然而,这个方法被标记为Obsolete.MSDN有这个说法 SetShadowCopyPath(String path) 消息:AppDomain.SetShado
..
我正在尝试执行以下操作: 下载包含我需要执行的程序集的字节数组. 在新的应用程序域中从此程序集中加载一个对象并在该对象上执行方法 这是我尝试将程序集加载到新应用程序域中的代码: 公共对象 Execute(byte[] agentCode){var app = AppDomain.CreateDomain("MonitoringProxy", AppDomain.CurrentDo
..
好的,所以我有一个 MAF 应用程序,它在单独的应用程序域中加载每个插件.这非常适合我的需要,因为它允许我在运行时动态卸载和重新加载我的插件. 问题是,我需要能够在子应用程序域中处理一个未处理的异常,捕获它,然后让该应用程序域优雅地失败而不取消父应用程序域 我该怎么做?这似乎是一项微不足道的任务,也是使用独立应用程序域的主要好处之一... 解决方案 我认为我对这个类似问题的回答
..
我最初对 Environment.Exit 的看法是这样的: 如果从默认的 AppDomain 调用,该进程将终止. 如果从非默认的 AppDomain 调用,AppDomain 将终止并将退出代码推送到 AppDomain.ExecuteAssembly 的返回中. 这对我来说似乎是合乎逻辑的,因为加载的 AppDomain 由于调用 Environment.Exit 而不是像
..
当我使用包含相同程序集的 Byte 数组多次调用 Assembly.Load(Byte[]) 时会发生什么? 我会为每次调用获得相同的 Assembly 实例吗? 同一程序集在应用程序域内多次加载??? 解决方案 每次调用都会得到一个新的 Assembly 对象,请阅读 文档,在接近尾声时有一个注释: “请注意,此方法重载始终会使用自己的映射创建一个新的 Assembly
..
当您将继承自 MarshalByRefObject 的对象传递给不同的 AppDomain 时,由创建它的 AppDomain 诱导的 GC.Collect() 不会收集该对象,前提是该对象在 GC 时未植根于任一 AppDomain.Collect() 调用了吗? [当我说没有 root 时,我的意思是没有开发人员编写的代码可以访问它了.] 看起来对象不是被收集而是被提升到下一代!
..
我正在使用 VirtualPathProvider 来包含在编译时不可用的用户控件.除了对实际包含该控件的 dll 的引用之外,一切正常. 当调用具有控件的页面时,它无法找到控件类型,除非我将 dll 放在 bin 文件夹中. 错误:解析器错误说明:解析服务此请求所需的资源时出错.请查看以下特定解析错误详细信息并适当修改您的源文件. 解析器错误消息:无法加载类型'App.Modu
..
在我们的应用程序(具有 65 个项目的解决方案)中,所有引用的程序集都会在运行时分析 Ninject 模块的存在(也应用了一些过滤).这些模块稍后加载到 Ninject 内核中,每个模块都为内核声明绑定. 我们采用了一个加载器,它以仅反射模式将引用的程序集加载到单独的程序集中.与 Ninject 从目录加载程序集的方式不同的是,该目录可以包含带有不应加载的模块的程序集.而且在一开始,并不是所
..
是否有单个 GC 堆进程以每个应用程序域都可以访问特定分区的方式进行广泛分区?还是每个应用程序域都有单独的 GC 堆?我确定其他堆,例如 HF 堆、LF 堆、存根堆、句柄表等等……所有这些堆都是为每个应用程序域单独分配的吗?GC 堆是否也被单独分配? 这可能是正确的,因为对象不能在 AppDomain 之间传递,除非对象是可序列化的或作为 MarshalByRef 实现的.我在想是否有一个叫
..
我使用 AppDomain 来加载程序集,然后卸载它们. 但是,我遇到了一个非常奇怪的问题.卸载 AppDomain 后 - 我仍然可以在进程资源管理器中看到某些程序集被多次加载!为什么有加载的程序集的剩余部分?AppDomain.Unload 不会释放所有 AppDomain 加载的内存吗? 您可以在附图中看到: AppDomain 总数为 3(我在进程的生命周期中创建了 3
..