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>
解决方案具体配置如下

Alt text

二、设置 IIS增加非Http协议支持

打开控制面——选择大图标——程序和功能——启用或关闭windows功能——勾选.net3.5中非Http激活,如果是win8/8.1/10则需要勾选.net4.6中所有的高级功能

Alt text

在IIS中创建要托管的站点目录指向WCF服务Web宿主所在目录

Alt text

增加站点非HTTP绑定支持

右键选择站点——编辑绑定——添加——类型选择net.tcp——绑定信息808:* 


Alt text

设置站点支持net.tcp协议,右键站点——管理网站——高级设置——已启用的协议——添加net.tcp 

Alt text

三、最终效果


在浏览器中访问站点的SVC文件,效果如下图

Alt text


源数据中可以看到已经是net.tcp绑定

Alt text

在WCFTestClient中调用服务

添加服务地址

Alt text


调用服务

Alt text


服务客户端配置文件信息

Alt text

后记

在正式使用中应将客户端配置文件中的主机地址替换为主机的IP地址

posted @ 2015-08-27 21:25  喝前摇一摇  阅读(1546)  评论(0编辑  收藏  举报