zoukankan      html  css  js  c++  java
  • 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 + "	" + 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地址

  • 相关阅读:
    c语言数组的赋值问题
    英语------------单词被动形式的读音规律
    英语------------单词复数形式的规律
    一天半时间大致的学习了HTML和CSS.
    没有权威,只有努力
    java 对象赋值问题
    Java-Math
    StringBuffer
    java--String方法
    某个日期的下一天
  • 原文地址:https://www.cnblogs.com/enternal/p/4764676.html
Copyright © 2011-2022 走看看