我使用WCF服务应用程序在IIS中托管WCF服务。我将服务配置为单例。但在开发过程中,我发现我的serviceHost经常被关闭并重新创建。服务器跟踪也确认了这一点。因此,我的下层服务也在不断构建。我必须错过一些非常愚蠢的东西。任何暗示都将受到赞赏。
更新1:
ServiceHost大约每5秒关闭一次。 AppPool是否有我可以查看的回收日志信息?
更新2:
我在Amit建议时打开了ASP.NET healthMonitoring并立即发现了问题。旧代码库是一个控制台应用程序,因此它会将内容写入bin文件夹。但这会导致ServiceHost在IIS下关闭。对我来说,主web.config是c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config。使用procmon很容易找到。
答案 0 :(得分:3)
听起来您的开发服务器上的IIS要么重新启动,要么正在为您的WCF服务回收AppPool。任何时候发生WCF Singleton都会在下一个请求中重新创建。
答案 1 :(得分:3)
在完成您的问题描述后,我认为您的应用程序正在将内容写入ASP.NET监视的目录中,因此,IIS会回收应用程序域。
无论如何,您可以添加以下配置,该配置将记录事件日志中的事件,并提供重新启动应用程序域的信息。
要启用ASP.NET运行状况监控,您可以编辑通常位于web.config
中的“主”%systemroot%\microsoft.net\framework\v2.0.50727\config
文件。
<healthMonitoring>
web.config
healthMonitoring
节点内,找到<rules>
节点在内部规则中,添加以下内容:
<add name="Application Lifetime Events Default"
eventName="Application Lifetime Events"
provider="EventLogProvider"
profile="Default"
minInstances="1"
maxLimit="Infinite"
minInterval="00:01:00"
custom="" />
重现问题并查看带有源ASP.NET 2.0的应用程序事件日志。这应该记录应用程序池被回收的原因。