添加虚拟目录到“默认网站”之后,IIS 7.5 AppDomain重新启动导致丢失会话

我希望你能在这里帮助我,因为我试图得到一些答案已经在另一个董事会( 见这里 )这个问题是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无法帮助我,因为两个原因:

  1. 无法findAppPool回收的任何条目,它应该在哪里? 事件查看器 – > Windows日志/应用程序和服务日志? (应该正确configuration)
  2. 也许我错了。 首先,我认为这是一个应用程序池回收,但与简化的testing,我build立一个没有任何应用程序和额外的应用程序池的例子。 现在看起来像这样:

网站

 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 应用程序域重新启动,原因在这里被彻底地覆盖:

https://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.asp

您是否启用了应用程序池回收事件日志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