C++ 如何检查WCF客户端通道(服务)是否终止?
我在Windows服务上托管了简单的WCF服务 当wcf服务的客户端空闲10分钟或更长时间时,wcf服务在客户端终止[不在服务器端,服务器服务仍处于活动状态],我收到famaous超时错误 我不想增加超时时间。我只是想知道是否有一种很长的方法可以知道服务是否在客户端终止?[API是否提供此信息?]然后如果会话终止,我将创建一个新的 祝福C++ 如何检查WCF客户端通道(服务)是否终止?,c++,wcf,wcf-client,C++,Wcf,Wcf Client,我在Windows服务上托管了简单的WCF服务 当wcf服务的客户端空闲10分钟或更长时间时,wcf服务在客户端终止[不在服务器端,服务器服务仍处于活动状态],我收到famaous超时错误 我不想增加超时时间。我只是想知道是否有一种很长的方法可以知道服务是否在客户端终止?[API是否提供此信息?]然后如果会话终止,我将创建一个新的 祝福 Ps:在客户端,我检查了WCFClientChannel->Sate==CommunicationState::Faulted,但这不起作用不幸的是,知道代理不
Ps:在客户端,我检查了
WCFClientChannel->Sate==CommunicationState::Faulted
,但这不起作用不幸的是,知道代理不再可用的唯一方法是尝试使用它
实际发生的情况是,您正在使用一个绑定(比如NetTcpBinding或WSHttpBinding),服务为该绑定维护客户端连接的资源。如果客户机在服务的receiveTimeout中指定的时间内(默认为10分钟)没有与服务通信,那么服务器会决定客户机不会回来,并丢弃客户机的服务器端资源
现在,当客户机返回并说“嘿,又是我了”时,服务器会说“我不知道你在说什么”,然后错误地调用,从而杀死客户机代理
因此,由于决策是在服务器端做出的,因此除非客户机尝试与服务对话,否则客户机无法知道
您可以执行以下操作之一:
不幸的是,知道代理不再可用的唯一方法是尝试使用它 实际发生的情况是,您正在使用一个绑定(比如NetTcpBinding或WSHttpBinding),服务为该绑定维护客户端连接的资源。如果客户机在服务的receiveTimeout中指定的时间内(默认为10分钟)没有与服务通信,那么服务器会决定客户机不会回来,并丢弃客户机的服务器端资源 现在,当客户机返回并说“嘿,又是我了”时,服务器会说“我不知道你在说什么”,然后错误地调用,从而杀死客户机代理 因此,由于决策是在服务器端做出的,因此除非客户机尝试与服务对话,否则客户机无法知道 您可以执行以下操作之一:
谢谢Richard Blewett。坏消息:没有办法知道代理不再可用就是尝试使用它。谢谢Richard Blewett。坏消息:没有办法知道代理不再可用就是尝试使用它。