我有一个项目,它使用WCF服务来执行一些数据库查询,构建一个“Environment”对象(由不同的数据库类对象组成)并将其返回到“Workspace”对象中的客户端。一直运行良好。
我在服务中添加了另一个“数据库”类型,其中包含所有正确的合同和方法更新。现在,当我调用该方法时,客户端在1分钟后超时。在调试中,大约需要3-5秒才能达到服务方法的结尾。然后在剩下的时间内没有任何事情发生,直到在客户端我们看到超时问题。没有错误/异常抛出。
请参阅以下内容:
来自客户的电话:
490 m_ScanWorkspace = m_Connection.ScanProxy.CreateEnvironments
服务终止方法:
477 return tWorkspace;
478 }
在服务中到达第478行需要3-5秒。 F10显示它已完成。
直到1分钟后客户端中的第490行显示超时错误时才会发生任何事情。在调试时我可以在tWorkspace中看到一个有效的对象。
答案 0 :(得分:0)
首先,使用Diagnostics
命名空间设置WCF tracing。只需使用该教程的第一个示例,WCF将转储所有活动的日志,您可以在日志查看器中打开该日志。它会告诉您呼叫失败的确切位置,这将帮助您查明问题。
WCF很棒,但它提供的错误消息含糊不清,而且往往无用。 1分钟后的超时并不一定意味着超时通常意味着什么 - 即无法找到服务器。这可能是其他问题。
超出阈值的可能性很大,导致响应对象不完整。这可以是数组长度,字符串内容长度,消息大小等。您可以在此处找到其中一些详细信息:https://stackoverflow.com/a/480191/146077
祝你好运!