有一天,我们遇到了从外部连接到 CRM 服务器的问题。当我们尝试使用 Web 服务与 CRM 进行通信或使用一些 Microsoft 实用程序(如 crmsvcutil.exe)时,服务器返回以下错误:
退出程序异常:底层连接已关闭:服务器关闭了预期保持活动状态的连接。
当我们使用 CRM WS 时,似乎对于第一个查询它工作正常并返回了数据。但是,当我们提出另一个查询时,它失败了。
有一天,我们遇到了从外部连接到 CRM 服务器的问题。当我们尝试使用 Web 服务与 CRM 进行通信或使用一些 Microsoft 实用程序(如 crmsvcutil.exe)时,服务器返回以下错误:
退出程序异常:底层连接已关闭:服务器关闭了预期保持活动状态的连接。
当我们使用 CRM WS 时,似乎对于第一个查询它工作正常并返回了数据。但是,当我们提出另一个查询时,它失败了。
如果启用了 IFD,那么我们需要检查 WPC 令牌过期时间。
我们找到了以下对您有用的解决方案:
问题出在 IIS 上的 CRM 设置中。打开 IIS 并禁用“HTTP keep-alive”选项(CRM 网站 -> HTTP 响应标头 -> 在操作面板中设置通用标头) - http://www.dotnetscraps.com/dotnetscraps/post/did-you-知道启用-http-keep-alive-in-iis-7-75.aspx
如果您无法禁用整个 CRM 的保持活动选项,您可以更新使用 CRM Web 服务的代码(禁用代码中的保持活动设置)- http://weblogs.asp.net/jan/archive/2004 /01/28/63771.aspx
我发现如果您尝试将IEnumerable
某项从服务返回给客户端,也可能出现这种情况。
首先枚举它(基本上是 call ToList()
)以确保在程序流继续之前检索所有数据并终止连接。