获取ASP.NET MVC Web应用程序以加载域中性

时间:2015-04-03 21:09:03

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

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

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

此任务意味着我希望将程序集从应用程序池的应用程序域中加载到共享域。

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

  1. 必须在GAC中签署该程序集。
  2. 绑定闭包中的依赖项必须位于GAC [并且已签名]。
  3. 我试图让它工作,但我无法让它适用于小型示例应用程序。我首先尝试将Newstonsoft.Json放入GAC,令我兴奋的是,它在回收后转移到共享域。但是,即使在GACing 所有之后,我也无法让任何其他人转到共享域名:

    enter image description here

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

    此外,我对NGEN代码页共享的相关性或与共享域加载的程序集形成对比有点困惑。

1 个答案:

答案 0 :(得分:1)

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