none
关于TimeoutException was unhandled 问题 RRS feed

  • 问题

  • 根据在老徐的空间步步为营的介绍,下载了相应的样例代码,并且自己编写了相应的服务,遇到一个问题,在host默认会指定ServiceHost 对象可一次接受的最多会话数的值,默认是10,通过修改MaxConcurrentSessions可以达到调整相应的限制,但是这里出现了一个问题:
    每次请求该MaxConcurrentSessions值是会类似减一控制,但是请求结束后,host端是有调用dispose的方法,但是该值是没有增加上去,host端该请求貌似是没有释放,也就是说如果默认是10的话,就只能请求10次,10次之后就无法继续请求,服务处理出现阻塞。进而等待,最后出现超时异常。如果把MaxConcurrentSessions相应调高,但最终量还是会达到。
    请问大家有类似的情况吗?这种情况,该如何释放host端的资源让该请求能继续增加呢?
    2010年3月4日 8:34

答案

  • 现在问题基本解决了,个人处理方法与理解大概如下:
    1.默认情况下WCF服务实例模式 是会话模式,需要调整为单调服务。同时service需要继承dispose,并且在客户端需要调用代理的close方法释放相应的资源。
    2.同时单调服务中,只能使用http方式,不能使用tcp方式,如果使用了tcp方式,还是会出现不能释放的情况,就算已经调用了代理的close及服务端的dispose方法,也无法释放原来的链接。
    这是我个人的处理和理解,不知道是不是有问题,如果有不同见解或者处理方法,请指导。

    2010年3月5日 5:44

全部回复

  • 默认情况下WCF服务实例模式 是会话模式。

    同一个客户端代理 对应的是一个 服务实例。


    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
    2010年3月4日 10:37
    版主
  • 原来这样哦~~好的~~我去调整一下~~
    呵呵~~谢谢
    2010年3月4日 16:03
  • 现在问题基本解决了,个人处理方法与理解大概如下:
    1.默认情况下WCF服务实例模式 是会话模式,需要调整为单调服务。同时service需要继承dispose,并且在客户端需要调用代理的close方法释放相应的资源。
    2.同时单调服务中,只能使用http方式,不能使用tcp方式,如果使用了tcp方式,还是会出现不能释放的情况,就算已经调用了代理的close及服务端的dispose方法,也无法释放原来的链接。
    这是我个人的处理和理解,不知道是不是有问题,如果有不同见解或者处理方法,请指导。

    2010年3月5日 5:44