1 绑定
配置服务
为了更直接的说明如何配置,这里我们就不重新设计服务了,就用项目建立默认的IService1吧,那么我们接下来讲讲如何配置服务的。
1.首先打开的你的一些功能服务,本人用的是WIN7,因此需要在控制面板->程序->打开或关闭Windows功能里找到如下选项
选中后点击确定,完成后你会做服务里找到如下一些已启动的服务,如图
2.完成如上配置后,那么下一步我们是修改解决方案里服务端依赖的IIS,由VS字段的IIS改为本机的IIS
右键SLNettcpDemo.Server->属性->Web->User Local IIS Web Server 如图
注意 记得点击按钮“Create Virtual Directory”他将在你本机的IIS默认网站下建立一个虚拟目录。
如图所示网站
添加虚拟目录后,接下来我们配置一下本机的IIS,让IIS支持net.tcp通信。
打开IIS,找到本机IIS的默认站点,并选择编辑绑定,结果如图
完成上述步骤后,我们需要让您的虚拟目录对net.tcp协议支持,因此,这时选中刚才建立的虚拟目录,并编辑虚拟目录的高级设置,添加对net.tcp的支持。如下图
那么在最后我们要在默认站点下放置如下文件clientaccesspolicy.xml,这是一个配置策略文件,告诉IIS如何处理net.tcp协议,切记这个文件命名必须如此,MS明确说的,不要重命名哦。如图
2 错误处理
a "wcf错误提示服务器已拒绝客户端凭据":
一个wcf基于streaming的大文件传输的实例。主要基于microsoft官方例子。
配置很简单,如binding采用nettcpbinding,具体如下:
<nettcpbinding>
<binding transfermode="streamed" maxreceivedmessagesize="1590309133" opentimeout="15" sendtimeout="15" receivetimeout="15"></binding>
</nettcpbinding>
服务端和客户端在一个机器上没问题,程序调的通,一些顺利。
后,将服务端和客户端分别放到两台机器上,看看传输效果,结果,客户端报错:“服务器已拒绝客户端凭据”。
仔细想了想,原因如下:
1、例子程序中,没设置transfer security mode,则系统默认transfer security mode值为“transport”。
2、在transport模式下默认客户端认证类型为:“windows credentials”,即,clientcredentialtype为“windows”。
3、在这种情况下,在一个机器上客户端和服务端都在一个机器上,采用windows认证肯定没问题。
4、但是放到两个机器上,传过来的基于客户端window账户的客户端凭证在另一个机器上验证不过。除非在服务端机器上做客户端凭证的特别设置。
因为只是测试,可以先把客户端验证关掉即可,在服务端和客户端binding配置分别添加:
<security mode="none"></security>
b "无法连接到 net.tcp://localhost/EasyEAPServiceHost/SystemBaseDataService.svc。连接尝试持续了 00:00:02.0481171 时间跨度。TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:808。 "
启动 Net.Tcp Listener Adapter服务
c "net.tcp://localhost/service/”不支持正在使用的 .Net 组帧模式。有关详细信息,请参见服务器日志。
更改tcp绑定的端口号,不要与http 绑定一样的端口