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