NGen ASP.NET以保存内存-未使用本机映像

NGen ASP.NET以保存内存-未使用本机映像,asp.net,.net,ngen,Asp.net,.net,Ngen,我们有一个我们托管的web应用程序,我们将同一应用程序部署到同一台机器上的100多个“租户”。 默认情况下,托管DLL的内存不会在进程之间共享,这意味着我们会将同一DLL加载100多次到内存中。我们的目标是避免这种情况,而NGen似乎是实现这一点的方法,因为它特别允许这种情况发生 ASP.NET应用程序是预编译的,所有的DLL都已加密,但似乎没有使用它们 Fusion Log Viewer为我们提供以下输出: *装配活页夹日志条目(20.06.2017@16:53:11)* 手术是成功的。绑定结

我们有一个我们托管的web应用程序,我们将同一应用程序部署到同一台机器上的100多个“租户”。 默认情况下,托管DLL的内存不会在进程之间共享,这意味着我们会将同一DLL加载100多次到内存中。我们的目标是避免这种情况,而NGen似乎是实现这一点的方法,因为它特别允许这种情况发生

ASP.NET应用程序是预编译的,所有的DLL都已加密,但似乎没有使用它们

Fusion Log Viewer为我们提供以下输出:

*装配活页夹日志条目(20.06.2017@16:53:11)*

手术是成功的。绑定结果:hr=0x0。手术 已成功完成

从以下位置加载程序集管理器: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll运行于 可执行文件c:\windows\system32\inetsrv\w3wp.exe ---下面是详细的错误日志

===预绑定状态信息===日志:DisplayName=SD.LLBLGen.Pro.ORMSupportClasses,版本=5.1.0.0,区域性=中性, PublicKeyToken=ca73b74ba4e3ff27(完全指定) 日志:Appbase=file:///E:/WebHotel/tenant/ItemService/ 日志:初始私有路径= E:\WebHotel\tenant\ItemService\bin日志:Dynamic Base=E:\Temporary ASP.NET文件\itemservice\081f93f5日志:缓存基=E:\Temporary ASP.NET文件\itemservice\081f93f5日志:AppName=fd860966调用 程序集:Product.Core.Library,版本=2.5.12456.0, 区域性=中性,PublicKeyToken=空。 ==日志:从E:\Temporary ASP.NET Files\itemservice\081f93f5\fd860966\assembly\dl3\08cf29cf\00893e3e\U afe9d201\SD.LLBLGen.Pro.ORMSupportClasses.dll加载的IL程序集

*装配活页夹日志条目(20.06.2017@16:53:11)*

手术是成功的。绑定结果:hr=0x0。手术 已成功完成

从以下位置加载程序集管理器: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll运行于 可执行文件c:\windows\system32\inetsrv\w3wp.exe ---下面是详细的错误日志

===预绑定状态信息===日志:DisplayName=SD.LLBLGen.Pro.ORMSupportClasses,版本=5.1.0.0,区域性=中性, PublicKeyToken=ca73b74ba4e3ff27(完全指定)日志:Appbase= file:///E:/WebHotel/tenant/ItemService/ 日志:初始私有路径= E:\WebHotel\tenant\ItemService\bin日志:Dynamic Base=E:\Temporary ASP.NET文件\itemservice\081f93f5日志:缓存基=E:\Temporary ASP.NET文件\itemservice\081f93f5日志:AppName=fd860966调用 程序集:Product.Core.Library,版本=2.5.12456.0, 区域性=中性,PublicKeyToken=空。 ==日志:从E:\Temporary ASP.NET Files\itemservice\081f93f5\fd860966\assembly\dl3\08cf29cf\00893e3e\U afe9d201\SD.LLBLGen.Pro.ORMSupportClasses.dll加载的IL程序集

如您所见,它不会从
C:\Windows\assembly\NativeImages\u v4.0.30319\u 64
加载本机映像

使用: NGen显示“SD.LLBLGen.Pro.ORMSupportClasses,版本=5.1.0.0,区域性=中性,PublicKeyToken=ca73b74ba4e3ff27”

给了我们:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>ngen显示 “SD.LLBLGen.Pro.ORM支持类,版本=5.1.0.0,区域性=中性, PublicKeyToken=ca73b74ba4e3ff2 7“Microsoft(R)CLR本机映像 生成器-版本4.6.1087.0版权所有(c)Microsoft Corporation。 版权所有

根:

\服务器\e$\Template\2.5.12456.0\ItemService\bin\SD.LLBLGen.Pro.ormsupper 依赖于“SD.LLBLGen.Pro.ORMSupportClasses”的NGEN根, 版本=5.1.0.0,文化=中性,PublicKeyToken=ca73b74ba4e3ff27”:

\服务器\e$\Template\2.5.12456.0\WS\bin\SD.LLBLGen.Pro.ORMSupportClasse s、 动态链接库

本机图像:

SD.LLBLGen.Pro.ORMSupportClasses,版本=5.1.0.0,区域性=中性, PublicKeyTok en=ca73b74ba4e3ff27


不确定这是否是问题所在,但
c:\windows\system32\inetsrv\w3wp.exe
似乎是一个32位的可执行文件,您使用的是64位
ngen.exe
。如果你的应用程序是32位的,你需要使用32位的
ngen.exe
,如果是相反的,则需要使用64位的
w3wp.exe

如果这不是问题所在,您可能希望查看此博客帖子(如果您还没有):

您好,w3wp的system32版本是64位版本。32位在SysWOW64文件夹中。(由于AppPool已验证“启用32位应用程序:FALSE”),我将完成链接中的步骤并向您报告,谢谢