wcf创建基于tcp协议的iis寄宿服务的第一个例子
继续看wcf,今天看了wcf的自寄宿和iis寄宿的tcp协议的实现方式,自寄宿倒是没什么问题,使用tcp协议的寄宿,还是遇到了一些问题,这里跟大家分享一下解决的方法,我是看的a大的文章,地址在这里,如何进行基于非HTTP的IIS服务寄宿。
因为是作为一个demo来尝试的,不明白含义的或者用不到的就可以先不用,契约中的ServiceContract特性中的命名空间没有用到,就没有设置,客户端的配置文件除了设置地址绑定和契约之外,还需要指定一个name供函数调用,使用通道工厂根据这个终结点的name来创建通道。
1.配置协议
appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
appcmd.exe set app "Default Web Site/WasHostingDemo" /enabledProtocols:net.tcp
2.报错
2.1无法调度消息,因为终结点地址“net.tcp://127.0.0.1/WasHostingDemo/CalculatorService.svc”上的服务对该地址的协议不可用。
解决方案:设置tcp的协议,使用appcmd.exe set app "Default Web Site/WasHostingDemo" /enabledProtocols:net.tcp同一个目录不要用多个协议,我把默认网站的目录设置的跟应用程序的路径一样,就提示这个错误。
2.2无法激活请求的服务“net.tcp://127.0.0.1/WasHostingDemo/CalculatorService.svc”
解决方案:配置Framework版本,通常都是设置4.0了,在应用程序池中找到自己的网站,选择高级设置更改。
2.3无法连接到 net.tcp://127.0.0.1/WasHostingDemo/CalculatorService.svc。连接尝试持续了 00:00:01.0000014 时间跨度。TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接。 127.0.0.1:808
解决方案:需要启动tcp的监听服务,这个问题是由于Net.Tcp Listener Adapter服务没有启动,启动的时候要首先把Net.Tcp Port Sharing Service这个服务启动,不然是启动不了的。