我正在开发托管多个WCF OData服务的服务器应用程序(C#4.0,VS2010)。 我观察到非常奇怪的服务行为,并且找不到任何描述我在应用程序中看到的内容的文档。
当服务客户端出于某种原因中断连接时,服务会按照我的预期进入Faulted状态。但它们仍然可以继续正常工作(它们接受来自新客户端的连接而没有问题,并继续按预期提供数据 - 所有这些都处于相应DataServiceHosts的Faulted状态。)
如果我增加并发客户端数量,有时大多数同时连接的服务之一会静默停止工作。如果我尝试在浏览器中打开其URL,则返回“Endpoint not found”消息。没有例外或其他可见的症状我可以用来深入研究。它只是默默地停止。尽管存在Faulted状态,但具有较少并发客户端数量的其他服务仍可继续正常工作。有时,巨大的并发访问不会触发服务的静默死亡,并且它会继续正常工作。
另一个奇怪的事实。当我打开WCF跟踪时,我无法重现静默服务停止。它完美无缺。所以我不能使用WCF跟踪来调查问题的根源。任何人都可以解释一下真正的WCF OData服务生命周期是什么吗?为什么它继续与Faulted州合作?什么可能是沉默停止的原因?每次客户端断开连接后,是否应重新启动WCF OData服务?