我希望你能在这里帮助我,因为我试图得到一些答案已经在另一个董事会( 见这里 )这个问题是build立在斯科特福赛思在这里的答复。
将新的虚拟目录添加到IISpipe理器中的“默认网站”时,位于默认网站中的所有其他应用程序将以某种方式回收。 为了简化我的问题,我举了一个例子,我可以跟踪当前会话的时间戳,并意识到会话信息真的在添加VD后丢失,这意味着AppDomain被回收了。
这是情况:
网站
Default Web Site 1 (virtual directory) (d:\TestAppDomains\1\) - app1 (Application) (using App Pool 1) 2 (virtual directory) (d:\TestAppDomains\2\) - app2 (Application) (using App Pool 2)
据我了解,添加一个虚拟目录只是更改applicationHost.config,这不应该导致AppDomains回收。 也许这是一个代表团的问题,但我想我没有足够的理解:(
有没有影响这种行为的属性? 我已经将AppPool设置设置为在configuration更改后不重新联机,但没有帮助。
我真的很感激你能帮助我,因为我现在挣了近6个月。
当然如果你需要的话,我会很乐意提供更多的信息。
更新1:
HealthMonitoring无法帮助我,因为两个原因:
网站
Default Web Site 1 (virtual directory) (d:\TestAppDomains\1\) session1.aspx (Sets current timestamp to session variable and redirects to session2.aspx) session2.aspx (displays session variable)
通过调用localhost / 1 / sessions1.aspx我可以看到时间戳。 添加第二个虚拟目录(例如“2”(d:\ TestAppDomains \ 2))并刷新页面后,会话消失,表示variables为空。
干杯,亚当
我和你在IIS论坛上描述的情况一样:一个网站,几个应用程序池,几对应用程序(web服务)和虚拟目录(html + js),自动化部署等等。
问题是一样的:当我添加/删除虚拟目录,所有的应用程序重新启动。 这是不好的,因为我打算提供多个版本,并希望用户在部署新版本时工作。
我已经与设置代表团玩没有成功。 然后我注意到添加/删除一个应用程序并没有导致其他的重新启动。
所以,这是解决scheme: 为网页创build单独的应用程序而不是虚拟目录 。
如果您有一个ASP.NET 应用程序域重新启动,原因在这里被彻底地覆盖:
您是否启用了应用程序池回收事件日志logging? 那将是我开始的第一个地方:

如果您有ASP.NET应用程序,则还可以在web.config的system.web部分中启用HealthMonitoring。 这些日志logging选项可能有助于识别正在发生的事情。 一个样品:
<system.web> <healthMonitoring enabled="true" heartbeatInterval="1"> <rules> <add name="HeartBeat" eventName="Heartbeats" provider="EventLogProvider" profile="Default" minInstances="1" minInterval="00:01:00" maxLimit="Infinite"/> <add name="App Lifetime" eventName="Application Lifetime Events" provider="EventLogProvider" profile="Default" minInstances="1" minInterval="00:00:00" maxLimit="Infinite"/> </rules> </healthMonitoring>
常见问题 – ASP.NET 2.0中的运行状况监视
http://forums.asp.net/t/1027461.aspx/1
healthMonitoring元素(ASP.NET设置架构)
http://msdn.microsoft.com/en-us/library/2fwh2ss9%28v=vs.100%29.aspx