前言

在做即时通信项目时,手上另一个项目的颠簸,即时通信项目一直是改改停停的,一些改动比较小,没有即时的签入,然后一段时间本地的项目代码与源代码存在不少区别,在这种情况下,因为新的需求添加,需要给WCF服务添加新的方法,出现了一个浪费我很长时间的问题。

问题

遇到的问题:
服务器未提供有意义的回复;这可能是由协定不匹配、会话过早关闭或内部服务器错误引起的。

这个问题,之前有遇到过,并按照网上的解决办法进行了修改,没想到又出现了,之前的解决办法如下:
可能原因:
1、WCF中不允许在协议中定义一个类型而传输其子类型. 除非在该类型上定义了[KnownType(typeof(子类型))]
2、WCF传输List<object>时序列化问题
WCF传输List集合时,在序列化时是有大小限制的,默认的可序列化的集合长度是65536,如果List的大小超出这个值就需要更改了配置了,在服务器端的behavior配置中增加一行配置:

<behavior name="WCFService.Behavior">
<serviceMetadata/>
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph=""/>
</behavior>

并且在对应的binding配置中添加readerQuotas节点配置:

    <binding name="BasicWsHttpBinding">
<reliableSession enabled="true" />
<security mode="None">
<transport clientCredentialType="None" />
<message clientCredentialType="None" />
</security>
<readerQuotas maxDepth="" maxStringContentLength="" maxArrayLength="" maxBytesPerRead="" maxNameTableCharCount="" />
</binding>

解决方法

再次遇到这个问题,心里一阵恐慌,会话过早关闭与内部服务器错误是不可能的,只能是协定不匹配导致,但是我反复排查确认,协定也是正确的,花费大量时间后,依然没有解决此问题,到最后没办法,让同事获取源代码的最新版本,然后把我添加的新方法,让他也添加一遍,清理解决方案后,重新生成,运行后正常启动。这就无奈了,想前想后,只能把问题归咎于没有及时签入代码上了,可能版本上会存在一些问题。

经验教训

项目中的代码要及时签入,改动某些地方后,重新运行程序测试没问题,就签入好了。反正有变更集,出问题还可以在还原。另外,遇到一些棘手问题,如果实在没有思路,不妨把代码还原一下,然后把更改的内容在重新添加一遍,或许问题就解决了。

最新文章

  1. bzoj4349: 最小树形图
  2. [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示
  3. 【Alpha】Daily Scrum Meeting第四次
  4. golang调用c++文件
  5. redmine中创建项目与跟踪标签(原创)
  6. [转]在ASP.NET MVC5中实现具有服务器端过滤、排序和分页的GridView
  7. eclipse-统计代码行数
  8. Unity脚本在层级面板中的执行顺序测试3
  9. CentOS安装Nginx负载
  10. (7)nehe教程1 创建一个OpenGL窗口:
  11. CSS 中区块的使用_宽高属性
  12. 网络IPC:套接字之套接字选项
  13. ios学习基础篇一
  14. js打断点
  15. Python绘制wav文件音频图(静态)[matplotlib/wave]
  16. 使用flask框架实现web页面与数据库数据互联+常见的几种状态码
  17. Jenkins自动发布代码实战篇
  18. (4.25)格式化T-SQL工具
  19. unigui1404在delphi10.2.2安装
  20. HP-UX平台安装Oracle11gR2数据库

热门文章

  1. 软件工程实践助教每周小结 &lt; 福州大学 | 傅明建 &gt;
  2. CSS制作渐变背景色
  3. Hadoop Mapreduce中wordcount 过程解析
  4. httpd 处理模型
  5. MyBatis 处理sql中的 大于,小于,大于等于,小于等于
  6. selenium 定位密码软键盘
  7. phpcms公共函数库 总结
  8. ldap认证jupyter notebook
  9. CentOS7操作Redis4.0
  10. idea提交git报错Push rejected: Push to origin/master was rejected