none
wcf订阅/发布模式订阅端非正常退出的问题 RRS feed

  • 问题

  • 我按照msdn上-》.net 开发-》.net framework4->windows communication foundation -> windows communication foundaton示例方案中\WF_WCF_Samples\WCF\Scenario\DesignPatterns/ListBasedPublishSubscribe 的例子写了一个订阅/发布的程序。让datasource持续给client端发送数据,采用netTcpBinding协议,但是碰到如下问题:当client端(订阅端)非常关闭程序(如crtl+c),client可能有多个,关闭一个,datasource端(发布端)在一端时间后抛出异常。请问大家这种情况下有什么好的解决办法吗?

    ps 现有办法是在承载服务端把inactivityTimeout设得很小,小于datasource发送间隔时间/2,这样一个client非正常退出不会影响datasource发布数据,但是inactivityTimeout小到3,4秒左右时,承载服务端抛出了nullreference异常。

    2011年4月7日 2:43

答案

  • 我按照msdn上-》.net 开发-》.net framework4->windows communication foundation -> windows communication foundaton示例方案中\WF_WCF_Samples\WCF\Scenario\DesignPatterns/ListBasedPublishSubscribe 的例子写了一个订阅/发布的程序。让datasource持续给client端发送数据,采用netTcpBinding协议,但是碰到如下问题:当client端(订阅端)非常关闭程序(如crtl+c),client可能有多个,关闭一个,datasource端(发布端)在一端时间后抛出异常。请问大家这种情况下有什么好的解决办法吗?

    ps 现有办法是在承载服务端把inactivityTimeout设得很小,小于datasource发送间隔时间/2,这样一个client非正常退出不会影响datasource发布数据,但是inactivityTimeout小到3,4秒左右时,承载服务端抛出了nullreference异常。

    你服务对于回调方法,做处理,自己写Try Cach代码。

    客户端不在线,服务回调会出错。

    你回调的时候做一下异常处理即可


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 跳水p 2011年4月13日 5:45
    2011年4月9日 5:32
    版主

全部回复

  • 抛一个异常时正常的,毕竟通道断开了,捕获并处理就可以拉。
    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。
    2011年4月7日 4:13
  • 我按照msdn上-》.net 开发-》.net framework4->windows communication foundation -> windows communication foundaton示例方案中\WF_WCF_Samples\WCF\Scenario\DesignPatterns/ListBasedPublishSubscribe 的例子写了一个订阅/发布的程序。让datasource持续给client端发送数据,采用netTcpBinding协议,但是碰到如下问题:当client端(订阅端)非常关闭程序(如crtl+c),client可能有多个,关闭一个,datasource端(发布端)在一端时间后抛出异常。请问大家这种情况下有什么好的解决办法吗?

    ps 现有办法是在承载服务端把inactivityTimeout设得很小,小于datasource发送间隔时间/2,这样一个client非正常退出不会影响datasource发布数据,但是inactivityTimeout小到3,4秒左右时,承载服务端抛出了nullreference异常。

    你服务对于回调方法,做处理,自己写Try Cach代码。

    客户端不在线,服务回调会出错。

    你回调的时候做一下异常处理即可


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    • 已标记为答案 跳水p 2011年4月13日 5:45
    2011年4月9日 5:32
    版主
  • 你的服务托管在控制台吗?在服务端的回调服务上要做try catch来处理异常。建议托管到IIS用WAS来处理。
    你随时可以开始!
    2011年4月10日 5:15
    版主