继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services

WCF绑定netTcpBinding寄宿到控制台应用程序

服务端

添加WCF服务应用程序 Wettery.WcfIISHost.Services,其中添加两个WCF服务,GameService.svc  PlayerService.svc,删掉契约接口和 .cs内嵌文件,只留下.svc文件

我们通过Autofac注入契约/服务的依赖关系,Nuget引用

Install-Package Autofac.Wcf

修改两个svc文件的ServiceHost声明

<%@ ServiceHost Language="C#" Debug="true"
Service="Wettery.WcfContract.Services.IGameService, Wettery.WcfContract.Services"
Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>
<%@ ServiceHost Language="C#" Debug="true"
Service="Wettery.WcfContract.Services.IPlayerService, Wettery.WcfContract.Services"
Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %>

添加 Global.asax,修改 Application_Start 方法,程序启动时就注入依赖关系

protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
//注册其它依赖关系
//.... //注册WCF服务依赖关系
var wcfAssembly = typeof(GameService).Assembly;
builder.RegisterAssemblyTypes(wcfAssembly).AsImplementedInterfaces().AsSelf();
var container = builder.Build();
AutofacHostFactory.Container = container;
}

服务端配置

修改Web.config中system.serviceModel节

<system.serviceModel>
<services>
<service name="Wettery.WcfContract.Services.GameService" behaviorConfiguration="mex">
<endpoint address="" binding="netTcpBinding" contract="Wettery.WcfContract.Services.IGameService" bindingConfiguration="netTcpBindingConfig"></endpoint>
<!--为net.tcp绑定提供元数据-->
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
<service name="Wettery.WcfContract.Services.PlayerService" behaviorConfiguration="mex">
<endpoint address="" binding="netTcpBinding" contract="Wettery.WcfContract.Services.IPlayerService" bindingConfiguration="netTcpBindingConfig"></endpoint>
<!--为net.tcp绑定提供元数据-->
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="netTcpBindingConfig" transferMode="Buffered" portSharingEnabled="true">
<readerQuotas maxStringContentLength="6553600" />
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="mex">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

IIS配置

因为IIS默认不支持非HTTP协议,所以要开启非HTTP功能,“打开或关闭Windows功能”中选中HTTP和非HTTP激活

编译WCF应用程序,在IIS中添加一个站点,指向WCF目录,绑定两个协议,HTTP用21335端口,NET.TCP用21336端口

站点,高级设置中启用net.tcp协议

客户端测试

还是用wcftestclient工具测试,WCF服务元数据地址:

http://localhost:21335/GameService.svc
http://localhost:21335/PlayerService.svc

如果Invoke发生错误

通常是没开启这两个服务,开启即可

Net.Tcp Listener Adapter
Net.Tcp Port Sharing Service

WCF绑定netTcpBinding寄宿到IIS的更多相关文章

  1. WCF绑定netTcpBinding寄宿到控制台应用程序

    契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGa ...

  2. WCF寄宿与IIS里时遇到的问题

    [问题总结]WCF寄宿与IIS里时遇到的问题 最近在公司做了一个小的视频处理网站,由于视频处理,网站在不同的服务器上,所以处理视频的时候得在网站服务器上通过wcf请求视频处理服务器处理视频,并将结果返 ...

  3. 创建WCF服务寄宿到IIS

    一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的win ...

  4. WCF服务寄宿到IIS

    一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的wind ...

  5. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  6. (转) [老老实实学WCF] 第三篇 在IIS中寄存服务

    第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...

  7. WCF : 如何将NetTcpBinding寄宿在IIS7上

    摘要 : 从IIS 7 开始, IIS增加了对非HTTP协议的支持. 因此, 自IIS 7之后, 可以将NetTcpBinding等非HTTP协议的Bindings直接寄宿在IIS上面. 本文将介绍如 ...

  8. WCF 非http寄宿IIS

    摘要 从IIS 7 开始, IIS增加了对非HTTP协议的支持. 因此, 自IIS 7之后, 可以将NetTcpBinding等非HTTP协议的Bindings直接寄宿在IIS上面. 本文将介绍如何在 ...

  9. [WCF实践]1.WCF使用net.tcp寄宿到IIS中

    一.IIS部分 环境:Windows Server 2008 R2 1.安装WAS,如下图所示:   2.网站net.tcp协议绑定,如下图所示:   3.网站启用net.tcp,如下图所示:   二 ...

随机推荐

  1. [C语言]进阶|结构类型: 枚举, 结构, 类型定义

    --------------------------------------------------------------------- 枚举: // main.c #include <std ...

  2. vscode的环境变量code

    vscode的安装路径 本质:vscode的安装路径/Applications/Visual Studio Code.app/Contents/Resources/app/bin 下面有code可执行 ...

  3. ceph常用运维技巧总结1

    格式 json 数据增强可读性 --format json-pretty -f json-pretty ceph quorum_status -f json-pretty ceph mon_statu ...

  4. JVM系列1:Java内存区域

    JVM系列主要分享自己都虚拟机的理解,我自学时的知识框架多来源于<深入理解Java虚拟机_JVM高级特性与最佳实践>这本书,感兴趣的朋友可直接去阅读这本书. 本系列暂定有3部分,它们是学习 ...

  5. aio,nio ,io 心得

    1.nio 流的过程有几个,连接,可读,读 ,返回 :连接了不一定可读,等待浪费时间,这些时间可以去读其他的连接,selector是管理,管理全部测一下可不可读,只对可读的连接进行读取.同时,nio有 ...

  6. EF连接Mysql 表'TableDetails'中的列'IsPrimaryKey'的值为DBNull

    无法生成模型,因为存在以下异常:'System.Data.StrongTypingException:表'TableDetails'中的列'IsPrimaryKey'的值为DBNull.---> ...

  7. 大端&小端问题

  8. 加入 Jungle Testnet

    [加入 Jungle Testnet] 主网测试需要消耗大量 EOS,JungleTestnet为我们提供了一个测试用的EOS主链,上面的EOS可以通过申请获得.每6小时可以申请100EOS. [创建 ...

  9. IPV4/IPV6双协议栈配置案例

    拓扑: XRV1配置: =================================================================== hostname XRV1! ipv6 ...

  10. CentOS7双网卡绑定配置

    step1:创建绑定文件 [root@node-1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-bond0 TYPE="bond"BOO ...