问题标签 [appdomain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
silverlight - Silverlight 是否为每个浏览器选项卡使用单独的应用程序域?
如果同一个 Silverlight 应用程序在两个 Web 浏览器选项卡中运行,每个选项卡是否使用单独的应用程序域?
如果您知道 Microsoft 在何处明确提供此信息,请提供参考。
c# - 解决方法 .net 应用程序域仅按值传递对象
我正在开发一个严重依赖插件的.net 应用程序。应用程序本身包含与远程服务器的连接。
最近我深入研究了应用程序域,并将它们视为将插件代码与应用程序的其余部分隔离的理想解决方案。
然而,有一个很大的缺点使我无法实现用于托管插件的应用程序域。似乎没有办法通过引用另一个应用程序域来传递对象,而另一个应用程序域需要传递对连接对象的引用。
我希望有人能给我一个解决方法,这样我就可以传递对该对象的引用。
注意:创建代理是不可能的,连接层已经充当代理,因为类是自动生成的。
注意 2:不能使用 System.AddIn,因为它在紧凑框架上不可用。
.net - AppDomain 创建速度有多快?
我刚刚发现,如果通过 Reflection.Emit 生成程序集,.NET 框架会将引用保存在一个静态成员中,以防止 Reflection.Emit 类不被 GC'ed。
由于限制,我无法使用 DynamicMethod。我还在程序过程中生成了很多程序集(IronScheme 的增量编译器)(可能是 1000+)。
因此,我想只在一个单独的域中处理代码生成,然后再将其卸载(尚未决定如何处理)。
有没有人有任何经验这会有多贵?
.net - 跨应用域回收使用自定义性能计数器
我有一个 ASP.NET 应用程序,它通过创建和写入自定义性能计数器来跟踪统计信息。有时,我在错误日志中看到指示计数器无法打开,因为它们已在当前进程中使用。我认为这是由于我的 .NET appdomain 已在同一个 w3wp.exe 进程中重置。当我的应用程序域被回收时,如何避免这些错误并重新建立与我的性能计数器的连接?
柜台建设:
计数器用法:
[2009 年 3 月 26 日更新] 收到的错误消息是:
实例“_lm_w3svc_1_root_myapp”已经存在,进程的生命周期。在它被删除或使用它的进程退出之前,它不能被重新创建或重用。已经存在一个生命周期的进程。
我试图通过初始化性能计数器并在瞬态 AppDomain 中写入其中一个来在控制台应用程序中复制异常。然后我卸载 AppDomain 并在第二个 Appdomain 中再次执行此操作(相同的过程)。他们都成功了。我现在不确定这是什么原因,我对 ASP.NET 中 AppDomain 回收的假设似乎是错误的。
c# - 如何仅将签名程序集加载到新的 AppDomain?
我正在做一个插件系统,其中主应用程序在新 AppDomain 的运行时加载程序集 Addin1.dll 和 Addin2.dll。
但是,如果 Addin1.dll 使用我的密钥签名(强名称)而 Addin2.dll 没有,我希望能够只加载 Addin1.dll 并拒绝 Addin2.dll。
我怀疑需要通过在 AppDomainSetup 中设置一些参数来完成?
.net - 列出进程中的 AppDomain
是否有可能如何在 Process 中枚举 AppDomains?
c# - 消息泵和 AppDomain
我有一个将 DLL 作为插件加载的 C# (FFx 3.5) 应用程序。这些插件加载在单独的 AppDomain 中(有很多很好的理由,而且这种架构不能改变)。这一切都很好。
我现在需要从其中一个插件中显示一个对话框。请记住,我无法将对话框表单返回到主应用程序并在那里显示(当前的基础架构不支持它)。
失败1
在我的 DLL 中,我创建了一个名为 Show 的表单。对话框轮廓出现但没有绘制,并且它不响应鼠标事件。我认为这是因为 DLL 位于单独的 AppDomain 中,并且应用程序的消息泵不知何故无法将消息发送到新表单。
失败2
在我的 DLL 中,我创建了一个名为 ShowDialog 的表单,它应该为对话框创建一个内部消息泵。对话框显示并响应点击(万岁),但似乎主应用程序不再处理或调度 windows 消息,因为它退出绘画并且不再响应鼠标事件。由于某种原因,现在似乎主应用程序的消息泵没有发送。
失败 3
在我的 DLL 中,我创建了一个名为 Application.Run 的表单。这肯定会创建一个完整的第二个消息泵。我得到了与失败 2 相同的行为 - 对话框的行为,但调用应用程序没有。
关于这里到底发生了什么以及我如何从另一个 AppDomain 的 DLL 中显示一个对话框并让调用者和被调用者仍然响应并正确绘制的任何想法?
.net - 是否为每个请求创建 AppDomain?
在 ASP.NET 3.5(带有 IIS6)中,是否为每个请求创建了 AppDomains?我知道所有应用程序在 w3wp.exe 下都有自己的 AppDomain,但是整个 AppDomain 究竟是如何工作的呢?
今天我和一位同事争论,他试图说服我,如果 ASP.NET 应用程序有一个静态对象(或 Singleton 类),那么这个对象将在所有请求之间共享。我认为这是错误的。我对吗?如何说服我的同事?
谢谢!
asp.net-mvc - 是否可以在不同的 AppDomain 中运行 ASP.NET MVC 路由?
我在想出以下解决方案时遇到问题。我有一个最近从 Web 表单升级到 MVC 的博客。该博客在两个不同的域上以瑞典语和英语提供,并且在 IIS 中的同一个网站上运行。
问题是我想要两个网站上的语言特定网址,如下所示:
英文:http ://codeodyssey.com/archive/2009/1/15/code-odyssey-the-next-chapter
瑞典语:http ://codeodyssey.se/arkiv/2009/1/15/code-odyssey-nasta-kapitel
目前,我通过根据调用的域在每个请求上注册 RouteTable 来实现这一点。我的 Global.asax 看起来像这样(不是整个代码):
这目前有效,但我知道这不是一个很好的解决方案。启动此应用程序时,我收到“已添加项目。键入字典”错误,有时似乎不稳定。
我只想在 Application_Start 中设置我的路由,而不是像现在这样在每个请求上清除它们。问题是请求对象不存在,我无法知道我应该注册哪种语言特定的路由。
一直在阅读有关 AppDomain 的信息,但在网站上找不到很多有关如何使用它的示例。我一直在考虑给这样的东西加注星标:
然后在每个应用程序域中注册每个网站路由,并根据 url 将请求发送到其中一个。找不到任何关于如何以这种方式使用 AppDomain 的示例。
我完全偏离轨道了吗?或者有更好的解决方案吗?
c# - 如何在不使用 AppDomains 的情况下实现 .net 插件?
问题陈述:实现一个允许相关程序集被覆盖的插件系统(避免文件锁定)。在 .Net 中,可能不会卸载特定程序集,只能卸载整个 AppDomain。
我发布这个是因为当我试图解决这个问题时,每个解决方案都提到了使用多个 AppDomain。多个 AppDomain 很难正确实现,即使是在项目开始时进行架构设计时也是如此。
此外,AppDomains 对我不起作用,因为我需要跨域传输类型作为 Speech Server worfklow 的 InvokeWorkflow 活动的设置。不幸的是,跨域发送类型会导致程序集被注入本地 AppDomain。
此外,这与 IIS 有关。IIS 有一个 Shadow Copy 设置,允许在加载到内存时覆盖正在执行的程序集。问题是(至少在 XP 下,没有在生产 2003 服务器上测试)当您以编程方式加载程序集时,卷影副本不起作用(因为您正在加载 DLL,而不是 IIS)。