我有一个WCF服务操作,只对SQL数据库执行LINQ查询,查找具有匹配Guid的35条记录中的1条(它真的很简单)。当我从一个简单的沙盒应用程序调用此方法时,它立即返回。但是,当我在Windows服务中运行时,对该方法的第一次调用大约需要25秒(我在调用之前和之后需要一个时间戳),第二次调用(在每次调用时都是相同的,在之后立即调用)第一个,仅用于测试目的)立即回来。
调用发生在一个ThreadPool.QueueUserWorkItem委托中,其他操作在它之前和之后执行,而且它是整个委托中唯一延迟的事情。
延迟是否有意义,或者这里出了什么问题?。
更新: 我已经确认问题不在于方法本身。我首先调用了一个完全不同的服务方法,它具有该延迟,并且在两个瞬间执行之后两次调用原始方法。所以,无论对服务器的第一次调用是什么导致了问题。
答案 0 :(得分:1)
在你的情况下,第一个电话会做两件事:
这可以解释不同之处。在某些系统上,第一个呼叫可以超时,而第二个呼叫只需要一到两秒钟。
答案 1 :(得分:1)
您可能想要检查的一件事是查看托管该服务的ASP.NET辅助进程是否具有“空闲超时”,对我来说这似乎是ASP.net的初始启动可能导致的你的问题。
答案 2 :(得分:1)
您是否尝试过enabling WCF tracing?在流程操作活动的活动边界中查找延迟。