服务器拒绝了会话建立请求:WCF 托管在 IIS 上

Posted

技术标签:

【中文标题】服务器拒绝了会话建立请求:WCF 托管在 IIS 上【英文标题】:The server rejected the session-establishment request: WCF hosted on IIS 【发布时间】:2012-10-08 05:47:13 【问题描述】:

我们在 IIS 应用程序中实现了一些 WCF 服务,通过默认端口 (808) 上的 net.tcp 进行通信,使用 Microsoft Net.Tcp 端口共享服务,在生产服务器上引发错误。当我实例化与第一个服务的连接时,我得到一个异常:

<URL> 的服务器拒绝了会话建立请求。所有其他服务都响应良好。

但它在我们的测试服务器上运行良好。

我最初认为失败的特定服务有问题,但我尝试将服务列表重新排列为不同的顺序,它似乎始终是我遇到的第一个失败的服务。 (我说 SEEMS 是因为它认为在测试的早期迭代中,我看到它发生在它命中的第二个服务上。但我无法重现。)

我查看了应用程序启动延迟,这似乎不是问题,因为我可以在测试完成后立即返回并再次运行测试 - 只有一两分钟的延迟 - 然后得到同样的错误。此外,在较低级别的环境中,启动延迟可能会达到 30 秒到一分钟,但结果仍会按预期返回。

我尝试从 INetManager 通过 http 访问服务,但所有服务都出现间歇性故障 - 特定服务将在调用时返回黄屏死机,然后在 WSDL 上提供预期的链接下一秒后。

我完全无法解释这种行为,或者如何解决它。我已经用谷歌搜索了错误消息,但没有发现任何有用的信息。这可能是一个配置问题——生产服务器是新配置的虚拟机,我们可能没有完全正确的配置(而所有较低级别的环境已经运行这个和其他类似的应用程序有一段时间了),但我不知道是什么寻找。我查看了运行应用程序的应用程序池的属性,并将其与较低级别的环境进行了比较,没有发现任何差异。

如果有人能指出我正确的方向,我将永远感激你。

【问题讨论】:

您也可以尝试在 ServerFault 上发布此问题的不同版本。我不是这个主题的专家,但它听起来更像是服务器/iis/防火墙/路由问题,而不是 WCF/编程问题。 感谢杰罗恩的建议。 【参考方案1】:

我能找到的东西:


http://go4answers.webhost4life.com/Example/connect-busy-wcf-service-host-while-725.aspx:

MaxConcurrentSessions (default = 10) [Per-channel] 服务一次可以接受的最大会话数。只对基于会话的绑定(wsHttp 或 netTcp)起作用"


http://blogs.infosupport.com/unable-to-generate-a-wcf-proxy-using-svcutil-but-retreiving-the-wsdl-works/

所以最后的诀窍是在 c:\windows\temp 文件夹中为您的应用程序池标识添加额外的权限 [使服务能够生成元数据] 以解决问题。


另外,是否配置了超时或其他限制并受到限制?看看tracing 并使用 WcfTestClient 访问该服务,看看您是否可以找到潜在的错误。

【讨论】:

以上是关于服务器拒绝了会话建立请求:WCF 托管在 IIS 上的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7.5 中的 WCF 服务托管 - 由于扩展配置,无法提供您请求的页面 [重复]

WCF服务的IIS托管(应用程序)

WCF 无法为具有 iis 权限的 SSL/TLS 安全通道建立信任关系

启用从 jQuery ajax 到不在 IIS 中托管的 WCF 服务的 CORS POST

想要将 WCF Web 服务作为 Windows 服务托管,而不是在 IIS 中托管

WCF 413 请求实体太大 - 自托管 WebHttpBinding