IIS 中托管基于TCP绑定的WCF服务
IIS 中托管基于TCP绑定的WCF服务
一、创建一个基于TCP绑定的WCF服务
1、创建一个的简单的服务具体代码如下
服务契约定义
namespace SimpleService { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IHelloService”。 [ServiceContract] public interface IHelloService { [OperationContract] string GetMessage(string message); } }
服务具体方法实现
namespace SimpleService { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“HelloService”。 public class HelloService : IHelloService { public string GetMessage(string message) { return message + "\t" + DateTime.Now; } } }
在Web应用程序中创建SVC文件指向服务代码
<%@ ServiceHost Language="C#" Debug="true" Service="SimpleService.HelloService" %>
具体配置文件设置如下
<system.serviceModel> <services> <service name="SimpleService.HelloService" behaviorConfiguration="HttpGetEnable"> <!--设置绑定协议为TCP协议--> <endpoint address="" bindingConfiguration="NoneSecurity" binding="netTcpBinding" contract="SimpleService.IHelloService"> </endpoint> <!--源数据访问节点--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"> </endpoint> </service> </services> <bindings> <netTcpBinding> <!--允许端口共享,使其他基于TCP绑定的WCF服务也能使用808端口--> <binding name="NoneSecurity" portSharingEnabled="true"> <!--取消安全验证--> <security mode="None"> </security> </binding> </netTcpBinding> </bindings> <behaviors> <serviceBehaviors> <!--允许通过http协议获取源数据--> <behavior name="HttpGetEnable"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <!--启用多站点绑定,方便使用IP地址或者域名访问--> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"> </serviceHostingEnvironment> </system.serviceModel> <system.webServer> <!--启用目录浏览方便使用--> <directoryBrowse enabled="true"/> </system.webServer>
解决方案具体配置如下
二、设置 IIS增加非Http协议支持
打开控制面——选择大图标——程序和功能——启用或关闭windows功能——勾选.net3.5中非Http激活,如果是win8/8.1/10则需要勾选.net4.6中所有的高级功能
在IIS中创建要托管的站点目录指向WCF服务Web宿主所在目录
增加站点非HTTP绑定支持
右键选择站点——编辑绑定——添加——类型选择net.tcp——绑定信息808:*
设置站点支持net.tcp协议,右键站点——管理网站——高级设置——已启用的协议——添加net.tcp