参考博文:
HowTo: netTcpBinding on IIS and things to remember
在上面这些参考的博文中,都有提到如何部署,下面再结合个人实践重复一遍:
目标服务器:IIS7,Windows 7
1. 安装WAS (Windows Process Activation Service)服务和WCF的HTTP 和Non-Http的激活组件,默认情况是都没有安装的。
1.1:WAS: Win+R——输入: OptionalFeatures.exe ,出现”打开或关门Window功能”的窗口,如下图
将(Windows Process Activation Service下的组件打上勾。
1.2:WCF HTTP和No HTTP激活组件:在上图中将下面的组件也打上勾:
点击确定,开始上面选择的组件安装。
2. IIS注册asp.net 4.0
找到Visual Studio 命令提示(2010),输入:aspnet_regiis –i
3. 启动服务: NetTcpPortSharing ,NetTcpActivator ,Windows Process Activation Service
Win+R——》输入services.msc,出现服务管理窗口,启动上面提到的服务(如果没有启动):
4. 编写WCF应用程序
略
5. 部署
l 在IIS7中新建网站 TCPDemo,执行编写WCF应用程序的解决方案文件夹
l 给网站添加net.tcp的绑定,如下图:
绑定信息:809:* 表示从809进来的任何请求都处理
l 添加应用程序,指向我们的服务项目
l 为新添加的应用程序,启用net.tcp协议,如下图:
l 浏览服务,如下(用net.tcp提供服务元数据):
l 添加服务引用:
到此基本完成。
遇到过的问题:
1, 在浏览器中浏览服务时,提示:
Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
原因:在安装WAS 和WCF 的Http 或non-Http激活组件时,将IIS的.net framework版本更新为3.0的版本了;而我们的wcf应用程序是在.net framework 4.0上创建的。
解决方法:IIS注册asp.net4.0.
2, 在浏览器中,浏览服务时:
找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址。注册的基址方案是 [http]
该现象的原因时:没有给网站添加net.tcp的绑定。
3, 添加服务应用时提示:
无法调度消息,因为终结点地址“net.tcp://szc0292:809/TCP_IIS/Service1.svc/mex”上的服务对该地址的协议不可用。
我的遇到该现象的原因是:
l 没有改网站下的应用程序启用net.tcp协议
l NetTcpPortSharing ,NetTcpActivator 2个服务在不同的进程里面,一个指向3.0的SMSvcHost.exe,一个指向的4.0的SMSvcHost.exe;解决方法:将指向3.0 的SMSvcHost.exe服务路径该为何4.0的;WIN +R—》cmd——》输入:
Sc config NetTcpActivator binpath= "C:\Windows\Microsoft.NET\Framework\v4.0.30319\SMSvcHost.exe";在重新启动NetTcpActivator服务,问题解决。
4,不能将服务部署在网站上,必须在网站下新建应用程序执行要部署的TCP服务。