问题标签 [appdomainsetup]

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.

0 投票
1 回答
1765 浏览

.net-assembly - 无法在 appDomain 中加载程序集

直到最近我通过调用 Assembly.LoadFrom 来加载我的程序集,这没关系。但是现在我需要将它加载到一个临时的 appDomain 中,但是在尝试将程序集加载到临时域中时,我一直遇到 FileLoadException。我试图将 appDomainSetup 参数传递给 CreateDomain 方法,但没有成功。

这是我的代码。

我的程序集位于我的应用程序基目录的子目录中

0 投票
2 回答
2535 浏览

c# - ApplicationBase 外的 PrivateBinPath

我的目录结构如下所示:

HostProgram.exe正在尝试加载HostedLib.dll,这取决于SharedLib.dll.

因此,我SharedLib.dll正在创建以加载它,但它需要能够找到.ApplicationBaseAppDomain/Host Program Base/HostedLibs/SharedLib.dll

我试图添加..PrivateBinPathforAppDomain但根据MSDN

私有程序集部署在与应用程序相同的目录结构中。如果为 PrivateBinPath 指定的目录不在 ApplicationBase 下,它们将被忽略。

由于PrivateBinPath不在 内部ApplicationBase,而是在一个目录中,因此它不在内部ApplicationBase并且被忽略。因此,AssemblyResolveException当我尝试将 DLL 加载到新的AppDomain.

我还尝试将 设置ApplicationBaseHost Program Base文件夹并添加HostedLibsPrivateBinPath,但这会导致域根本无法解析HostedLib.dll

那么->如何ApplicationBase使用AppDomainSetup?

0 投票
1 回答
75 浏览

google-app-engine - GAE - 域验证产生错误

在过去的几个月里,我一直在按照这些说明https://developers.google.com/appengine/articles/domains向应用程序添加域,没有任何问题

由于过去两天我一直无法,当单击激活此服务时,我收到此错误消息“尝试安装此应用程序时发生错误。请稍后再试。”

我也尝试过使用较旧的域和不同的应用程序并得到相同的错误,因此问题似乎更普遍,而不是孤立于特定域/应用程序。

有谁知道如何解决?

0 投票
2 回答
707 浏览

c# - 如何让 AppDomainSetup.SetConfigurationBytes() 工作?

在我的应用程序中,我正在创建沙盒域,我需要动态定义绑定重定向规则。但是,我既不能使用 SetConfigurationBytes 方法传递 ConfigurationFile 设置也不能传递原始 xml 数据。

我创建了一个示例来检查配置数据是否应用于子域:

其中 Verifier 是具有一种方法的普通类:

更新 上面代码的第一个问题是,它必须从 MarshalByRefObject 继承,才能将 DebugPrint 调用编组到子 appdomain,而不是调用在当前域中创建的副本(感谢 sthotakura)。结果 ConfigurationFile 设置开始起作用。但是 SetConfigurationBytes 仍然没有运气。无论如何,目标是定义通过 SetConfigurationBytes 传递的绑定规则。

0 投票
0 回答
68 浏览

c# - 具有专有 DLL 的应用程序域

我有一个 ASP.NET C# 应用程序,它需要执行另一个应用程序域中专有 DLL 中的代码。似乎我能找到的大多数代码都需要我制作对象MarshalByRefObject,但由于它们在另一个 dll 中,我真的无法访问它们。理想情况下,我想只调用另一个 AppDomain 中的专有 dll,但我真的不知道该怎么做。

0 投票
2 回答
2107 浏览

asp.net - 如何使用 PowerShell 确定 \Temporary ASP.NET Files\root\{site hash}?

ASP.NET 使用临时文件目录来存储用于影子复制和动态编译的文件。典型的路径将如下所示。请注意路径末尾的哈希。

我正在使用自动部署,并注意到这些文件夹及其内容不会自动删除。作为部署过程的一部分,我想自动化删除未使用的临时文件的过程。这样,一旦部署了我的站点的新版本,旧的临时文件就会被删除。

哈希似乎是以确定性的方式生成的,所以我希望我能够将哈希确定为我的部署前脚本的一部分,并在部署后将其删除。

如何为 ASP.NET 网站计算哈希?

参考:

  1. .Net 如何在 C:\Windows\Microsoft.NET\Framework\v{version}\Temporary ASP.NET Files\root 中命名其临时文件夹
  2. http://blogs.msdn.com/b/junfeng/archive/2004/02/09/69919.aspx
  3. http://dotnetinside.com/en/type/System.Web/ApplicationManager/4.0.0.0
0 投票
1 回答
1683 浏览

c# - 使用 .NET 程序集而不锁定 dll 文件

我有一个每天执行一次的 Windows 服务。这只是10分钟的行动。

我在网站的 bin 文件夹中构建服务的文件,因为该服务使用网站的 dll。

不幸的是,我注意到当我安装网站模块(网站安装程序的 dotnetnuke .zip 模块)时,我收到一个错误,即文件被另一个进程锁定。

在安装每个模块之前禁用服务是非常有问题的,所以我想让我的服务不锁定其中使用的 dll。

我阅读了有关 AppDomain 和 ShadowCopyFiles 选项的信息,但我无法让它们为我工作。

这是我如何使用 ShadowCopyFiles 的示例:

示例汇编代码:

私有缓存已创建且未锁定,并且原始文件已锁定。<-现在这对我来说很荒谬。

0 投票
0 回答
79 浏览

c# - C# appdomain 权限无线程

我创建 appdomains 来动态加载 dll 到 - 如所假设的那样。

然而,我没有设法阻止一个未处理的异常终止整个事情——因为这似乎是不可能的。

但是,如果我可以禁止在 3rd 方 dll 中创建新线程,我真的不必这样做。

有没有办法在自定义 AppDomain 中禁止线程创建(可能还有任务创建),如果是:如何?

PS:我已经了解了 System.AddIn。如果没有人给出肯定的答案,我会看看它。

0 投票
1 回答
630 浏览

c# - 跨 AppDomain 的自定义序列化

简短版本:我正在尝试自定义跨 AppDomain 边界的序列化,特别是为了处理 AppDomain 的每一侧都有稍微不同的类版本的情况。我该怎么做呢?

长版:我们使用 AppDomains 来管理更大应用程序下的不同子模块。我们希望独立部署这些子模块,因此使用 AppDomains。我们在主应用程序和子模块之间有一个共享的contracts dll,不同版本的contracts dll 最终会出现在各个子模块中,因为每个子模块的更新频率都低于主应用程序。结果,有时会在contracts dll中添加一个新字段或新类型,并在主应用程序中使用,但子模块不知道如何序列化它。

我想我可以通过自定义序列化过程来解决这个问题,特别是 SerializationBinder.BindToType。但是要做到这一点,我需要告诉 AppDomain 的每一端都使用这个序列化绑定器。我该怎么做呢?我在网上看到的所有示例都有对 Serialize() 和 Deserialize() 的显式调用。我初始化 AppDomain 的代码是:

感谢您在这方面的帮助。

0 投票
1 回答
105 浏览

appdomain - 添加当前 AppDomain 的路径

我有两个完全不同的目录。目录 1 包含我的应用程序,目录 2 包含很少的程序集。在应用程序启动的运行时,我将加载程序集。默认情况下,执行程序集的 AppDomain 将发现目录 1(应用程序文件夹)或 GAC 中的程序集。如果文件不存在,我们将收到错误消息。但我还必须扩展 AppDomain 的搜索目录以在 Directory 2 中搜索。也就是说,AppDomain 将搜索 Directory1(本地 bin),然后是 GAC,然后是其他默认值,最后在 Directory 2 中搜索。

我尝试过: 1. 通过设置 PrivateBinPath,但它仅限于 ApplicationBaseDirectory。2.通过AssemblyResolve,但不直接引用。AssemblyResolve 代码也永远不会命中。