Asp.net IIS Express为每个请求加载和卸载模块
我们有一个ASP.NET项目在调试时使用IIS Express。在启动VS2013、加载解决方案、构建解决方案并以调试模式启动web应用程序之后,输出窗口将列出一组加载和卸载的DLL。经过一点搜索,我发现IIS Express会为每个请求重建站点。以下是输出窗口的一小部分:Asp.net IIS Express为每个请求加载和卸载模块,asp.net,iis,visual-studio-2013,web-essentials,mapped-drive,Asp.net,Iis,Visual Studio 2013,Web Essentials,Mapped Drive,我们有一个ASP.NET项目在调试时使用IIS Express。在启动VS2013、加载解决方案、构建解决方案并以调试模式启动web应用程序之后,输出窗口将列出一组加载和卸载的DLL。经过一点搜索,我发现IIS Express会为每个请求重建站点。以下是输出窗口的一小部分: 'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Loaded 'C:\WINDOWS\Microsoft.Net\asse
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.Entity\v4.0_4.0.0.0__b77a5c561934e089\System.Web.Entity.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\App_Web_dqpvaqg5.dll'.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\App_Web_global.aspx.cdcab7d2.bocgg9o6.dll'.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\App_Web_global.aspx.cdcab7d2.kvvdlbnf.dll'.
'iisexpress.exe' (CLR v4.0.30319: Domain 15): Unloaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Unloaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Unloaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-14-130719418943209850): Unloaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'
看到上面写着域名15的那行了吗?那是因为游泳池重新启动了15次
另外,一个重要的事实是,解决方案源和输出二进制文件都存储在映射驱动器中。驱动器驻留在我们的网络上
现在我已经尝试了我在网上能找到的一切:
- 删除项目中的所有断点
- 在本地缓存目录中加载符号(在工具->选项->调试->符号中)
- 还有其他一些不起作用的解决方案
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\App_Web_erxb23tr.dll'.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.Mobile\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.RegularExpressions\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.RegularExpressions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.RegularExpressions\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.RegularExpressions.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\assembly\dl3\a0da26c9\85d61bc1_9668d001\CalculsWrapper.dll'. Symbols loaded.
'iisexpress.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\assembly\dl3\a0da26c9\85d61bc1_9668d001\CalculsWrapper.DLL'. Symbols loaded.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\assembly\dl3\95fa9a38\65cf12c4_9668d001\HardLockWrapper.dll'. Symbols loaded.
'iisexpress.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\Users\ca0ssnc\AppData\Local\Temp\Temporary ASP.NET Files\vs\f3da8155\99ebd29d\assembly\dl3\95fa9a38\65cf12c4_9668d001\HardLockWrapper.DLL'. Symbols loaded.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (CLR v4.0.30319: /LM/W3SVC/2/ROOT-1-130719436820489369): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.Services\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
没有更多卸载的DLL。应用程序不再重新启动(请参阅始终使用DefaultDomain)。现在的问题是,每当我重新启动VS2013时,这个问题就会再次出现。每次重新启动VS2013时,我都必须断开并重新连接网络连接
另外,还有一个重要事实:我使用Visual Studio 2013更新4的Web Essentials。当我禁用此扩展时,就没有问题了!应用程序不会重新启动,我不需要断开网络连接。所以问题可能来自于这个扩展
现在,有人能告诉我,我断开网络连接、Web Essentials和Web应用程序文件的时间戳(无论出于何种原因)之间到底有什么关系吗???请确保从本地驱动器运行解决方案 我也经历过同样的问题。每个请求都非常慢,甚至只是返回一个代码200的结果,或者加载favicon 输出窗口显示与OP描述的症状相似的症状 我从映射的驱动器运行我的解决方案(即使映射指向本地驱动器)
从本地驱动器运行它可以直接解决问题。感谢@Simon Senécal对另一个答案的评论,它为我指明了正确的方向。好吧,对我来说,当您运行调试会话时,一切都很好,ASP.Net重新启动AppPool\AppDomain以再次执行
应用程序启动
,这样您就可以从头开始调试它了。如果在没有调试的情况下,在实际IIS使用过程中不会发生这种情况,那么应该可以。VS可以使用网络连接来加载已调试程序集的符号您可以尝试从IIS Express切换到普通IIS。它似乎可以避免每次重新加载所有其他DLL。此外,您还可以检查并暂时禁用每次尝试扫描DLL文件的防病毒软件(例如Windows Defender)。另外,如果您“只有”4GB RAM,并且认为需要更多的RAM内存,那么8GB或16GB的内存也有同样的问题,托管解决方案?我们决定将源文件和输出二进制文件移动到本地驱动器上,而不是映射驱动器上。这就解决了问题。