今天在公司使用Vista下开发了WCF的Tcp程序,公开了HTTP接口,看WCF程序说明,应该没有什么大问题,但是却说服务进程没有权限打开端口,真让人头疼,具体错误信息类似:
访问被拒绝
msdn上提了三个步骤来解决这个问题:
1.如果计算机不是域成员,请将身份验证模式和保护级别设置为 None 以禁用传输安全性,如下面的示例配置所示:确保通过设置终结点的 bindingConfiguration 属性将终结点与绑定关联。
确保在运行WCF程序示例前更改 PoisonMessageServer、服务器和客户端上的配置。
2.注意: 将 security mode 设置为 None 等效于将 MsmqAuthenticationMode、MsmqProtectionLevel 和 Message 安全设置为 None。#t#
3.若要使元数据交换正常工作,WCF程序应当向 http 绑定注册一个 URL。这要求服务在具有提升权限的命令窗口中运行。否则,您将接收到异常最后我以管理员权限来打开这个程序才能注册URL,看来Vista的安全性确实比较高,不知道该怎么写这个程序才能在vista下顺利运行另外,我测试了一下tcp协议和basicHttp协议的性能差异:
两者居然差别不是特别大:服务和客户端程序都在一个服务器上(vista)以tcp方式调用500次,大概使用600毫秒以http方式调用500次,大概使用800毫秒整体来说http比tcp慢30%不到,还是能够接受当然这是在本机,如果WCF程序是在公网上跑,就没有这么乐观了。居然没笔调用才1毫秒多一点。神速啊!