• 解决WCF调用多次之后没有响应的问题 转 武胜


    解决WCF调用多次之后没有响应的问题

    我最近遇到了一个缠扰不清的问题与WCF。  在RC1突然优良运作的应用开始断断续续地无法在发行修造.NET 3.0。  最复杂的是错误未返回,没有提供什么的调试信息。  客户调用到服务器未曾返回,但垂悬了,并且服务器没有提供故障信息。好象消息进入死区,。 

    在与WCF团队一些咨询以后,它被确定改变对缺省serviceThrottling的行为在修造的祸根。  缺省是16 MaxConcurrentCalls和10 MaxConcurrentSessions,  如此, 客户调用时真实地进入死区,并且服务器没有能提供任何信息,因为它没有能甚而处理他们。 在这种情况下,客户产生多条线程(~10个代理人)并且发布多个异步请求(~15)从每个代理人。  您做这种估算,并且您能看发生什么。

    确定的是做二件事。  首先, < behaviors > 更新app.config文件的部分如下:

    <behaviors>
                <serviceBehaviors>
                    <behavior name="NewBehavior">
                        <serviceThrottling maxConcurrentCalls="50" maxConcurrentSessions="50" />
                    </behavior>
                </serviceBehaviors>
            </behaviors>


     

    以上是从一个英文博客翻译过来的,由于本人不是英语专业,可能翻译有点不通或者有错误,请看原文
    http://blogs.msdn.com/karstenj/archive/2006/11/15/wcf-calls-hanging-without-any-debug-or-fault-information.aspx

    解决方案二


    最近发现,导致超过会话默认值原因是:

    WcfVDSelect.VDClsServiceClient MyService = new VDItemSelect.WcfVDSelect.VDClsServiceClient();
    其中WcfVDSelect是你在客户端添加服务引用时的名称,VDClsServiceClien是服务的类..GetString是类里的方法..
    多次调用出错原程序:
    private void btnOk_Click(object sender, EventArgs e)
    {
    WcfVDSelect.VDClsServiceClient MyService = new VDItemSelect.WcfVDSelect.VDClsServiceClient();
    MyService.GetString("aaa");

    }
    当我们每次调用WCF服务时,都创建一个实例,这时WCF就没创建一个会话..当你点击十次按钮时,就会出错超时..原因超过会话的默认值....

    其实我们可以用一个静态变量先放在内存里不释放,如
    private staticWcfVDSelect.VDClsServiceClient MyService = new VDItemSelect.WcfVDSelect.VDClsServiceClient();

    private void btnOk_Click(object sender, EventArgs e)
    {
    MyService.GetString("aaa");

    }
    无论你点多少次,都不会出错的了..这样可能WCF就认为是一个会话....

    第一种解决方案与第二种都可以解决,不过第一种的话,我们不知道要设置多大的会话,为了减少会话,第二种会更好些

  • 相关阅读:
    Leetcode刷题记录--39. 组合总和
    Leetcode刷题记录--31. 下一个排列
    Leetcode刷题记录--22. 括号生成(回溯)
    Leetcode刷题记录--17. 电话号码的字母组合(回溯)
    分布式学习之--6.824MITLab1记录
    总结javascript处理异步的方法
    引用、浅拷贝及深拷贝 到 Map、Set(含对象assign、freeze方法、WeakMap、WeakSet及数组map、reduce等等方法)
    Vue之富文本tinymce爬坑录
    iOS 13 正式发布,来看看有哪些 API 变动
    Vuex,从入门到...
  • 原文地址:https://www.cnblogs.com/zeroone/p/2477094.html
Copyright © 2020-2023  润新知