Red*_*ed1 8 c# asp.net iis web-services
编辑:此前称为"IIS重启和应用程序初始化之间的应用程序初始化行为".我已经更改了标题,以便从IIS /应用程序初始化中扩展问题,因为观察到的行为与之相关AppDomain.CurrentDomain.GetAssemblies();
我正在使用IIS应用程序初始化模块来预热asmx wed服务.
我已经实现了一些预热代码,以确保应用程序应用程序初始化成功JIT是我在Global.asax Application_Start事件中的asmx服务.这使用System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod()来遍历应用程序中的所有程序集(它还会获取所有程序集依赖项),以确保第一次调用服务的速度尽可能快.
当我使用"net stop w3svc&net start w3svc"来观察这种行为时,我可以看到(通过记录)所有程序集都是JIT,并且第一次调用服务的速度很快.
但是,当应用程序池在其配置的时间表(03:00:00)上自动回收时,日志仅显示直接引用的程序集是JIT,而不是也位于文件夹中的依赖项.
这导致第一次调用服务时产生不可接受的开销.
App Init在所有其他方面完全按预期执行,但为什么应用程序池的IIS重新循环只有JIT编译直接引用的程序集而不是它的依赖项?
Red*_*ed1 15
我在上面的评论中提到的帖子让我朝着正确的方向前进,然后我在这篇文章中找到答案:AppDomain.GetAssemblies和BuildManager.GetReferencedAssemblies之间的区别
所以我的代码改为 var assemblies = BuildManager.GetReferencedAssemblies();
| 归档时间: |
|
| 查看次数: |
11417 次 |
| 最近记录: |