WCF的项目总结
项目知识点积累
本随便旨在对项目中学到的一些知识点留个快照,以便日后参考。
WCF和DBNull
在使用WCF传输数据的时候,有时候需要传输一些特殊点的类型,比如DBNull,这样Service就会抛错,因为Service不能识别该类型,不能正常将其序列化。
解决方法:
(1)如是自定义DataContract,则需为Contract定义体加上KnownType Attribute,如下:
[DataContract]
[KnownType(typeof(System.DBNull))]
(2)如是Service的方法(比如封装的ExecuteScalar在传输DBNull的时候就会出错),需为方法的Interface定义处加上ServiceKnownType Attribute,如下:
[ServiceKnownType(typeof(System.DBNull))]
object ExecuteScalar(。。。);
以上,Over!
查看端口占用情况
WCF中使用了wsDualHttpBinding,回调使用80端口,但是烦人的是80老是被机子上其他的应用程序占用。可以用以下方法查看:
netstat -ano | find ":80"
结果:TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 3328
其中3328是进程ID,可以去任务管理器去查,也可以用以下命令:
tasklist | find "3328"
结果:MxDownloadServer.exe 3328 Console 0 3,228 K
这样就知道是被哪个应用程序占用了,以上,Over!
监视端口通信状况
做WCF的时候遇到问题,需要监视机器80端口的通信状况,可是找了好久,也没找到可用的Sniffer Pro破解版(汗。。。)。
因此换了个工具,使用WinDump,主页http://www.winpcap.org/default.htm,需要先装WinCap才能使用WinDump。
用如下命令:
windump -i 2 port 80 > c:\logfile.txt
就可以将所有80端口的通信记录到制定的文件中了,以上,Over!
tf status /s:tfs001 /user:* > c:\007.txt
其中TF.exe在C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE目录下。
查看TFS文件状态(Checkout)
tf status /s:tfs001 /user:* > c:\007.txt
其中TF.exe在C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE目录下。