IIS7上寄宿WCF(TCP)
将WCF寄宿在IIS上是WCF的一种寄宿方式,但是一直找不到在IIS上寄宿TCP的方法,由于先前使用的是IIS6,所以一直报net.tcp不能解析..上网查阅了很多资料发现似乎只有IIS7支持对TCP等其他通信方式的寄宿(WAS),下载了虚拟机装上Win7准备试一把(本来准备装Win2008可是公司只有DC版R2的镜像文件,装上之后怎么都激活不了.....)
0.安装IIS,FrameWork,WAS
这些都是Windows组件里添加的,就不多说了
1.配置IIS支持对WCF的寄宿
这里是第一个纠结点,如果配置不好,别说TCP,连HTTP都寄宿不上。一般情况下,如果机器上已经安装IIS,在安装.Net FrameWork时便会自动提示你把IIS对WCF的支持也装上,这就没有问题,不巧的是,如果你先装的是FrameWork,那恭喜你了,要手工执行一次IIS对WCF的支持安装(ServiceModelReg),这个文件隐藏在你安装的Framework工具中,一般使用路径 Framework\V3.0\Windows Communication Foundation目录下能找到(这里使用3.0,其他版本请自行参照,不过命令的参数会有变化,请自行纠结)
2.配置IIS节点,使其支持TCP
打开IIS管理器(由于第一次使用Win7,一直找不到运行在哪....又郁闷了一下),设置站点的绑定,追加上net.tcp,绑定信息设置为808:*,算是配置了Address,在web.config中tcp的address也使用空即可
3.按说这样就可以了,IIS寄宿了TCP的服务,运气好得观众此时应该可以实现想要的功能了,如果谁的运气不够好,请继续向下看
4.如果不是使用虚拟机,就不用看本条了,本人使用的是虚拟机,所以调试WCF必定要虚拟机和主机互通,但是上网看了看,方法基本都是使用桥接,然后将虚拟机和主机分配在一个网段,但是这明显不符合在公司测试的要求啊,主机的IP不能改(否则就上不了网....),虚拟机IP也不能改(不给分配IP...),想来想去就想到能不能使用虚拟网卡,可是刚建好虚拟网卡,主机的外网就被公司IT管理的给断了...至于这种方法能不能实现互通,请各位自行测试,测试好了麻烦告知在下,最后不得已,发现虚拟机的网络通信方式除了使用桥接,NET,Only..之外竟然还有一种方式,大喜...于是,将其指向虚拟机建立的VMnet8,再重新配置一下虚拟机的IP信息,网关指向net8的IP,果然内外机能通信了..
5.如果你已经熟练使用IIS7发布Web信息,这条也不用看了。本人由于是新装的Win7,又是第一次使用IIS7所以遇到了一个很经典的问题,虚拟机内能够访问到发布的服务,可是外机访问不到发布的服务,纠结之后感觉可能是权限的问题,于是打开虚拟机的来宾账户,发现还是不行,然后设置防火墙,打开http的文件访问,终于成功看到了wsdl信息.....
以上,本人的TCP服务终于在IIS上寄宿成功了,如果哪位想知道怎么发布TCP,怎么寄宿IIS这种正统的问题..额,这个网上资料比较多,就不说了,个人比较推荐Artech的系列