我们在WCF解决方案上有一个自定义侦听器,该侦听器继承自ChannelListenerBase<IDuplexSessionChannel>

我们有一个行为不端的客户端(不受控制),它与我们的TCP对话大致如下:

SYN  
SYN,ACK  
RST  

基本上,他们试图在建立套接字之前对套接字执行操作,然后关闭套接字并使其失效。

在我们的OnEndAcceptChannel代码中,我们最终无法创建通道,因为底层的Socket到我们到达时已经关闭,并且我们得到SocketException。 然后,这似乎杀死了侦听器,使其停止接受进一步的连接。

OnEndAcceptChannel ,我们尝试返回null, OnEndAcceptChannel Exception,并给侦听器发送错误,以便可以在调用堆栈的更高位置重新启动它。 后者是我们发现的唯一允许通道有效继续监听的解决方案,但是却具有杀死所有已建立的服务连接的令人不愉快的(且不可接受的)副作用。

有人对如何处理这种情况,保持倾听并且不失去已建立的联系有任何建议吗?

===============>>#1 票数:1 已采纳

我们最终解决了它。 我们没有返回null,而是返回了一个实现IDuplexSessionChannel的虚拟类的实例,该实例IDuplexSessionChannel上是一个哑巴状态机,仅此而已-愚弄WCF继续进行。

  ask by Stu translate from so

未解决问题?本站智能推荐:

2回复

WCF服务无法捕获客户端的崩溃

我已经创建了一个使用NetTCP绑定的WCF服务。 我的服务由客户端访问,保存其回调通道并稍后使用它来调用客户端(这是一个持久的tcp连接)。 一切正常,但如果我决定突然杀死客户端 - 我得到一个我无法捕获的SocketException(“现有连接被远程主机强行关闭”)。 我已经
1回复

无法为net.tcp WCF服务添加服务客户端

我正在尝试为基于net.tcp的WCF服务添加客户端。 当我使用“添加服务参考”并提供以下URL: net.tcp://localhost/service1.svc时 ,出现以下错误。 无法识别URI前缀。 元数据包含无法解析的引用:“ net.tcp://localhost/se
1回复

从Linux服务器上托管的Java客户端使用WCF

Windows服务器上托管为TCP IP或命名管道的WCF服务是否可以被Linux服务器上托管的基于Java的应用程序使用? 我有一个wcf服务,该服务要求低延迟和每天非常高的通话量。 由于性能问题和HTTP开销,无法在IIS上托管服务。 该服务需要由Linux服务器上托管的基于Jav
1回复

套接字与.Net远程处理与WCF对于我的服务? [关闭]

我需要在本地网络上创建一个服务(在.Net中),该服务将侦听请求并发送短信。 我对最佳解决方案感到困惑: 插座 网络远程处理 世界足球联合会 应该有一台服务器,并且多个客户端将连接并发送批量短信。 有人可以建议什么是最佳选择吗? 我创建了这个htt
3回复

如何使用基于套接字的客户端与WCF(net.tcp)服务?

我开发了一个使用net.tcp适配器并侦听特定端口的WCF服务。 我想使用普通的.net客户端连接到该服务,该客户端使用套接字将数据发送到端口并侦听响应。 当我尝试向此服务发送数据时,我收到错误:“现有连接被远程主机强行关闭”。 但是,我能够通过另一个使用WCF服务的地址/绑定/合同的
2回复

使用tcp绑定的wcf服务:如何知道客户端是否插入登录名/密码?

好吧,在我的第一个版本的服务中,我有双工合同,所以我可以保存客户端的信息,例如用户名,如果它已正确记录......等等。目标只允许调用方法,如果客户端已正确记录。 但是,我需要使用大文件,所以我决定我的服务必须使用流传输模式,但如果我使用流式传输模式,我就不能使用双工合同。 所以我的
2回复

WCF服务限制

我在WCF服务中使用了TCP绑定,并且一次可能有很多人连接到该服务,我的问题是,如果需要,我是否需要在wcf服务中进行服务限制,那么理想的做法是什么?
1回复

使用WireShark检查localhost上的WCF TCP服务器和客户端流量

我使用WCF在Visual Studio中创建了一个简单的TCP客户端和TCP服务器。 我在服务器上有一个简单的操作,它接收一个整数,递增并发送回去。 它按预期工作。 我想使用Wireshark来监视在localhost上运行的客户端和服务器之间的流量。 显然,在Windows上使用
1回复

如何使我的NET.TCP WCF服务处理安全和不安全的通信

我有一个需要处理以下内容的WCF服务: 1服务 常规TCP端点 安全的customUsernamePassword端点 安全的Windows端点 system.serviceModel部分如下所示: 这适用于Windows登录和CustomUse
2回复

WCF net.tcp SSL:服务器不支持客户端应用程序支持的任何密码套件

我有两台电脑,我们称之为PC1和PC2。 我编写了一个服务端应用程序,它打开一个自托管的WCF net.tcp端点,使用X509证书进行保护。 我用于运输安全的证书是“颁发给”任意名称,例如:MY-TEST-SERVICE。 我还写了一个客户端应用程序来与服务进行通信。 它知道并