使用serivceAutoStartProvider

时间:2016-02-11 19:06:20

标签: c# asp.net iis asp.net-web-api iis-7.5

我们正在使用IIS中的 serviceAutoStartProvider 功能来启动工作线程,而无需触发启动代码的请求。我们使用IProcessHostPreloadClient 实现在 .NET 4.5.2 WebApi应用程序中执行此操作。

此应用程序部署到Windows 2008 R2服务器,其中十几个Web应用程序托管在同一主站点下。所有应用程序都使用单独的.NET 4.0集成应用程序池(使用ApplicationPoolIdentity)。

我们使用以下appcmd.exe命令配置WebApi应用程序:

appcmd.exe clear config -section:system.applicationHost/serviceAutoStartProviders -commit:apphost
appcmd.exe set config -section:system.applicationHost/serviceAutoStartProviders /+"[name='MyAutoStartup',type='WorkerHost.StartupClient, WorkerHostAssembly, version=1.0.0.0, Culture=neutral, PublicKeyToken=null']" /commit:apphost
appcmd.exe set apppool "WorkerHostPool" /autoStart:"true" /startMode:"AlwaysRunning" /processModel.idleTimeout:00:00:00
appcmd.exe set app "Default Web Site/WorkerHost" /serviceAutoStartProvider:"MyHostAutoStartup" /serviceAutoStartEnabled:"true"

我们观察到几个w3wp.exe进程已加载了三个应用程序域:SharedDomain Appdomain,其中一个Web应用程序的应用程序域,和一个thrid应用程序域使用autoStart功能的Web应用程序!

为什么会这样?更重要的是,如何防止这种情况?

0 个答案:

没有答案