zoukankan      html  css  js  c++  java
  • 第一个WCF DEMO,将WCF服务部署在控制台上

         因为项目框架是WCF+MVC,由于之前未实际运用过,所以做了个小DEMO,以下是具体过程。

      新建WCF服务库

         
         新建后会在解决方案里看到以下目录
        
         我们要修改的是App.config文件
      
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
      <system.web>
        <compilation debug="true" />
      </system.web>
      <!-- 部署服务库项目时,必须将配置文件的内容添加到 
      主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
      <system.serviceModel>
        <services>
          <service name="WcfServiceLibrary.Service1" behaviorConfiguration="behaviorName">
            <host>
              <baseAddresses>
                <add baseAddress = "net.tcp://localhost:8732/Service1" />
              </baseAddresses>
            </host>
            <!-- Service Endpoints -->
            <!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
            <endpoint address ="" binding="netTcpBinding" contract="WcfServiceLibrary.IService1"  bindingConfiguration="wsTcpBindingName" >
              <!-- 
                  部署时,应删除或替换下列标识元素,以反映
                 用来运行所部署服务的标识。删除之后,WCF 将
                  自动推断相应标识。
              -->
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <!-- Metadata Endpoints -->
            <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 --> 
            <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="behaviorName">
              <!-- 为避免泄漏元数据信息,
              请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->
              <serviceMetadata httpGetEnabled="False"/>
              <!-- 要接收故障异常详细信息以进行调试,
              请将以下值设置为 true。在部署前设置为 false 
                以避免泄漏异常信息-->
              <serviceDebug includeExceptionDetailInFaults="False" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <bindings>
          <netTcpBinding>
            <binding name="wsTcpBindingName" maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" >
              <readerQuotas maxStringContentLength="1200000" maxArrayLength="12000000"/>
              <security mode="None"></security>
            </binding>
          </netTcpBinding>
        </bindings>
      </system.serviceModel>
    
    </configuration>

           传输方式是net.tcp,要注意的间bingdings,behaviors,services三个节点之点的名称要对应,还有就是发布服务的时候要将behaviors节点的serviceMetadata httpGetEnabled 设为false.

      测试服务成功了以后,新建一个控制台项目,引用WCF服务,然后代码启动服务

         

    Uri uri = new Uri("net.tcp://localhost:8000/Service1/");
                using (ServiceHost host = new ServiceHost(typeof(WcfServiceLibrary.Service1), uri))
                {
                    BindingElement bindingElement = new TcpTransportBindingElement();
                    CustomBinding binding = new CustomBinding(bindingElement);
                    host.AddServiceEndpoint(typeof(IService1), binding, "Service1");
                    ServiceMetadataBehavior metadataBehavior;
                    metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
                    if (metadataBehavior == null)
                    {
                        metadataBehavior = new ServiceMetadataBehavior();
                        host.Description.Behaviors.Add(metadataBehavior);
                    }
                    host.Open();
                    Console.WriteLine("WCF服务已启动");

          运行结果:

        

           附上DEMO:MVCDemo.rar
  • 相关阅读:
    移动文件夹时,千万别直接移动系统文件夹,应该直接复制或者移动这个系统文件夹内的内容
    UIView的intrinsicContentSize方法,在按钮中重写
    Reveal v4(8796) 使用
    AppCode 2016.3 注册码
    BSD process name correspondlng to current thread: knernel_task Mac OS version Not yet set
    iOS 适配HTTPS
    [Graphics] UIColor created with component values far outside the expected range, Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.
    SB中设置UITextField 无边框,真机上输入汉字聚焦时,文字 下沉
    TTTAttributedLabel 富文本小记
    iOS 应用数据存储的常用方式
  • 原文地址:https://www.cnblogs.com/haiwang/p/3037279.html
Copyright © 2011-2022 走看看