SilverLight搭建WCF聊天室详细过程(二十一)关于聊天室项目错误排查
时间:2010-12-31 来源:fugitiver
每天在群里和博客园留言回答的问题大概都是一样的几个,大家提问之前先看看我先前在博客园发的这系列随笔,希望大家遇到问题先自己分析,多利用搜索引擎和博客园资源,这也锻炼自己解决、分析问题的能力,我把WCF中常见的几种错误分析方法写给大家,请大家先自己尝试,不要自己不解决就直接在群里问提问,如果实在解决不了,来群里提问,谢谢大家。
大家遇到的问题可能是登录没反应,这时,大家要充分利用调试工具,调试工具可能会提示下面错误:
代码 未能连接到 net.tcp://swk-pc:4502/chatservice.svc。连接尝试的持续时间为 00:00:00.3880222。TCP 错误代码 10013: 试图以其访问权限所禁止的方式访问套接字。。原因可能是,试图以跨域的方式访问某服务,而该服务的配置不支持跨域访问。您可能需要与服务的所有者联系,以公开通过 HTTP 的套接字跨域策略,并在允许的套接字端口范围 4502-4534 之内承载该服务。
1.大家知道这个项目分客户端项目和服务端项目,源代码已经测试过不会出现这种问题,所以我们可以断定是配置问题,首先我们查看客户端配置:
客户端配置文件ServiceReferences.ClientConfig里net.tcp://swk-pc这里的swk-pc改成你自己的网站ip,重新调试,如果还是此问题,我们可以排除客户端错误,接着看服务端配置。
2.在浏览器中浏览chatservice.svc文件,我们看到
我们如果看到这个页面则表示IIS配置没问题,如果出现协议不匹配等错误就可以把错误推到IIS配置上,大家可以按照我第一篇对比配置。
3.如果IIS配置没问题,但是还提示上面的错误,这就是跨域文件问题,我在这里在提醒大家一次,比如我们的IIS目录指向chat.Web项目,浏览端口是809,我们的IIS里还有另一个网站使用80端口,这时,我们就要把跨域文件clientaccesspolicy.xml放到使用80端口的网站下,这是由于SilverLight会首先到80端口下检查跨域文件是否允许它访问。
4.数据库还原不成功问题,这里我做出解释,由于我这里数据库是sql server 2008 R2版,我只能备份成这个版本的,和它先前版本不兼容,我在下面会上传sql server 2005版本的sql文件,大家重新执行就可以了,如果三个表没有自动生成自动增加列,我们手动给每个表第一个字段设置为自动增加列。
聊天室200版数据库下载