asp.net - 让 ASP.NET MVC Web 应用程序加载域中性

标签 asp.net .net asp.net-mvc-4 clr applicationdomain

我的公司有大量的客户,我们目前能够在每台服务器上处理有限数量的客户。但是,每个客户端都使用相同的核心 Web 应用程序。目前,某些内容存储在每个站点的本地,因此我们不能让它们使用相同的站点/应用程序池;虽然我们确实有一个 Multi-Tenancy 转换项目。

我们对我们所有的程序集进行了强烈签名,我认为看看我们是否可以让它们在 ASP.NET 中加载域中性将是一个有趣的想法。这样做的好处是显着降低我们的内存成本,这是我们目前最高的成本/限制因素之一。此外,我们似乎能够简化当前[编译] IO/CPU 绑定(bind)的部署过程,并且经常花费我们大约 6 个小时。

此任务意味着我想将程序集从加载应用程序池的应用程序域移动到共享域。

我对域中性加载要求的理解是:

  • 程序集必须经过严格签名并在 GAC 中。
  • 绑定(bind)闭包中的依赖项必须在 GAC 中 [并经过强签名]。

  • 我试图让它工作,但我不能让它为一个小的示例应用程序工作。我首先尝试将 Newstonsoft.Json 放入 GAC,令我兴奋的是,它在回收后翻转到了共享域。但是,即使在 GACing 之后,我也无法让其他任何人切换到共享域。全部 其中:

    enter image description here

    我的目标是让我的主应用程序 DLL 被加载域中立。我如何调试/继续找出为什么剩余的程序集没有被加载为域中立?

    此外,我对 NGEN 代码页共享与共享域加载程序集的关联或对比感到有些困惑。

    最佳答案

    来自 ASP.NET 4.5 的实习生程序集可以是一种解决方案。查找 aspnet_intern 命令和 interndir 参数。

    关于asp.net - 让 ASP.NET MVC Web 应用程序加载域中性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29439704/

    相关文章:

    c# - 如何在 ASP.NET MVC 中获取错误状态代码

    c# - 创建 XLSX 文件需要更多时间来记录 100000 条记录并占用最大 RAM 内存

    c# - 错误 : ExecuteReader requires an open and available Connection. 连接的当前状态为打开

    c# - 为什么添加/删除这样的CSS类无效?

    c# - 在函数中放置经常重复的代码?

    c# - C# 中的命令行 CD(更改目录)变体?

    c# - 以这种方式使用 FileStream.seek 安全吗?

    c# - LINQ 中的 Context.SaveChanges()

    jquery - 使用AJAX JQuery和ASP.Net与母版页提交表单

    c# - System.IdentityModel.Metadata 和 X509SecurityToken 在 ASP.NET Core 中不可用