据我所知,BasicHttpBinding不支持ReliableSession功能。因此,这意味着当服务器(wcf主机)收到请求时,它将在客户端之后断开连接时执行。我希望我对此好吗?
问题是:我有一个带BasicHttpBinding的WCF服务。我们通过在客户端使用不同线程调用10次来测试此服务。这些请求都是在同一时间(差不多)完成的。在线程调用之后,我们通过终止进程来终止程序。结果,执行了10个请求中的6个,但是没有执行4个请求。我们使用wireshark检查了网络流量,并看到wcf服务主机收到了10个请求。但是,我们知道其中4个没有执行。
(在绑定时未配置超时值:这意味着它们都被设置为默认值。此外,wcf服务托管在iis上)。
这有什么问题?我在哪里可以查看?即使客户端断开连接,我们还能做些什么来实现10次执行?
即使客户端断开连接,我们还能做些什么来实现10次执行?
您可以将其设为默认行为。使用[OperationContract(IsOneWay=true)]
创建单向合约,客户端不等待回复,但只是在发送消息后断开连接。
由于即使客户端断开连接,您确实需要完成服务,我认为您需要完成数据库事务。
如果WCF连接到数据库,这将是正常的,特别是如果您使用相同的数据库用户和密码,如果是这种情况尝试连接一次所有WCF实例。
无论哪种方式,您必须确保您的WCF提供并发访问。单击here以获取有关并发WCF访问的更多信息。