none
访问WCF服务有时会出现以下的问题,是什么原因呢? RRS feed

  • 问题

  • 错误:套接字连接已中止,这可能是由于处理消息出错或远程主机超时或者潜在的网络资源问题导致的,本地套接字超时是00:09:59.

    在这里我要说明一下,我的后台都设置10分钟,而我这个服务访问,其实就是2秒就可以了,根据不存在超时,我的协议是nettcpbinding,这种错误的概率在5%左右,而且不是在同一个服务上,而且集中在同一地区,所以我有时怀疑是不是电信网络之间有问题,

    2010年4月12日 15:40

答案

  • 关于通道的TimeOut 时间的值,有很多。

    我现在就可以给你个接受数据超时的错误,我测试代码的时候发现的,刚才也回复了别人的帖子,现在也没理想的解决办法,目前还在收集中。WCF分布式开发常见错误解决(10):套接字连接中断,The socket connection was aborted,你或许能很好的理解这个错误。服务端处理大量数据的时候超时(超过设定的时间),就会出现这个错误。我这里使用的tcp绑定传输图片数据。

    opentimeout , closetimeout, receivetimeout :
    1.在什么情况下会发生?(编程的错误导致出错?物理网络问题?传送数据大小?)
    2.发生之后wcf 提示什么错误?(希望可以给出出错的原文)
    3.如果要通过测试故意让他们出错的话,如何测试?(如果可以的话希望能提供原代码)

    我尝试详细解答你的问题:什么情况会出现这个错误,以及如何测试。
    1.opentimeout:常见的就是服务代理端打开超时。
    closetimeout:与open对应,代理长时间不能关闭,释放服务资源,会超出时间出错。
      receivetimeout:简单理解就是接收超时,导致服务出错。
    2.receivetimeout我目前测试的代码出错的就是,套接字连接中断,The socket connection was aborted,
    其他两种情况暂时没测试。WCF分布式开发常见错误解决(10):套接字连接中断,The socket connection was aborted
    3.具体的测试思路:
       opentimeout:可以在服务代理open方式里添加延时代码,而配置opentimeout属性为一个较小的时间值,使服务代理open超时;
       closetimeout:与打开类似,调用关闭方法添加代码,延时,设置closetimeout属性为一个较小的时间值,使得关闭超时。
       receivetimeout:上传大量的数据,如图片文件数据等,很容易超时出错。设置receivetimeout属性为一个较小的时间值,容易出现超时错误。
      示例代码我会上传到我的博客控件,最近的一个流操作文章调试的代码就多次出现这个错误。我也在尝试解决。
    以上建议希望对你有所帮助。

    http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/dd830c5e-e74d-431c-84ab-450a5e481fa8


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    • 已标记为答案 Mog Liang 2010年4月20日 6:49
    2010年4月13日 2:52
    版主