WCF配置文件

Posted 努力决定下限

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WCF配置文件相关的知识,希望对你有一定的参考价值。

 

HOST

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="redisStringConfiguration" type="xxx.xxx.Redis.Configuration.RedisSettings,xxx.xxx.Redis,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
    <section name="redisHotelConfiguration" type="xxx.xxx.Redis.Configuration.RedisSettings,xxx.xxx.Redis,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" />
  </configSections>
  <redisStringConfiguration db="1" writeServerConStr="192.168.10.9:6379" readServerConStr="192.168.10.9:6379" maxWritePoolSize="100" maxReadPoolSize="100" autoStart="true" localCacheTime="31536000" recordeLog="false" />
  <redisHotelConfiguration db="5" writeServerConStr="192.168.10.9:6379" readServerConStr="192.168.10.9:6379" maxWritePoolSize="100" maxReadPoolSize="100" autoStart="true" localCacheTime="31536000" recordeLog="false" />

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

  <connectionStrings>
    <add connectionString="server=192.168.10.9;user id=root;password=admin;persistsecurityinfo=True;database=hotel;charset=utf8;AllowUserVariables=True" name="HotelRead" providerName="mysql.data.mysqlclient" />
    <add connectionString="server=192.168.10.9;user id=root;password=admin;persistsecurityinfo=True;database=hotel;charset=utf8;AllowUserVariables=True" name="HotelWrite" providerName="mysql.data.mysqlclient" />

    <add connectionString="server=192.168.10.9;user id=root;password=admin;persistsecurityinfo=True;database=wechatbusiness;charset=utf8;AllowUserVariables=True" name="WeChatBizRead" providerName="mysql.data.mysqlclient" />
    <add connectionString="server=192.168.10.9;user id=root;password=admin;persistsecurityinfo=True;database=wechatbusiness;charset=utf8;AllowUserVariables=True" name="WeChatBizWrite" providerName="mysql.data.mysqlclient" />

  </connectionStrings>
  <system.serviceModel>
    <services>
    
      <!--产品服务接口 localhost 192.168.20.32-->
      <service name="xxx.xxx.Service.Service.xxx" behaviorConfiguration="ServiceBehaviorCon">
        <endpoint address="net.tcp://localhost:8876/xxx" binding="netTcpBinding" bindingConfiguration="ServiceTcpBinding" contract="xxx.xxx.Service.IService.xxx">
        </endpoint>
      </service>
      
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviorCon">
          <serviceMetadata httpGetEnabled="False" />

          <serviceDebug includeExceptionDetailInFaults="True" />
          <!-- 配置运行时吞吐量设置,这些设置可以优化服务性能-->
          <!-- maxConcurrentCalls:该值指定整个 ServiceHost 中正在处理的最多消息数-->
          <!-- maxConcurrentInstances:获取或设置一个值,该值指定服务中可以一次执行的最多 InstanceContext 对象数-->
          <!-- maxConcurrentSessions:获取或设置一个指定 ServiceHost 对象可一次接受的最多会话数的值-->
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <netTcpBinding>
        <!--openTimeout【类型 System.TimeSpan】:获取或设置在传输引发异常之前可用于打开连接的时间间隔,指定在超时前必须完成打开操作的时间,默认值为 1 分钟。-->
        <!--closeTimeout【类型 System.TimeSpan】:获取或设置在传输引发异常之前可用于关闭连接的时间间隔,指定在超时前必须完成关闭操作的时间,默认值为 1 分钟。-->
        <!--receiveTimeout【类型 System.TimeSpan】:获取或设置在传输引发异常之前可用于完成读取操作的时间间隔,指定在超时前必须完成读取操作的时间,默认值为 10 分钟。-->
        <!--sendTimeout【类型 System.TimeSpan】:获取或设置在传输引发异常之前可用于完成写入操作的时间间隔,指定在超时前必须完成写入操作的时间,默认值为 1 分钟。-->
        <!--【注意:如果对绑定或通道启用了事务流,执行操作所需的时间可能会比指定的超时时间长。在这些情况下,将会因为超时过期而导致操作失败,事务也将随之中止。】-->
        <!--maxBufferPoolSize:获取或设置内存中用于对传入消息进行缓冲的最大字节数。默认值为 65,536 字节。
                【注意:如果接收的数据超过了可进行缓冲处理的数据,则超出缓冲区大小的数据将保留在基础套接字中,直到缓冲区中具有可用于存储剩余数据的空间为止】-->
        <!--maxReceivedMessageSize:获取或设置在采用此绑定配置的通道上可接收的最大消息大小,绑定可处理的最大消息大小(以字节为单位)。默认值为 65,536 字节。
                【注意:对消息大小进行的此限制旨在降低遭受拒绝服务 (DoS) 攻击的可能性】-->
        <!--maxConnections:取或设置一个值,该值控制客户端上可存入池中以备后续重复使用的最大连接数,以及服务器上可挂起调度的最大连接数。默认值为 10。-->
        <!--listenBacklog:获取或设置可挂起的最大排队连接请求数,返回可挂起的最大排队连接请求数,默认值为 10。
                【注意:ListenBacklog 是套接字级别的属性,描述要排队的“挂起接受”请求数。应确保最大并发连接数不超过基础套接字队列】-->
        <binding name="ServiceTcpBinding" openTimeout="00:10:00" closeTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="655350" maxReceivedMessageSize="1073741824" maxConnections="500" listenBacklog="1000">
          <security mode="None">
            <message clientCredentialType="None" />
          </security>
          <!--获取或设置可由使用此绑定配置的终结点处理的 SOAP 消息的复杂性约束【下面几个值都是 int 值】-->
          <!--maxArrayLength:获取并设置允许的最大数组长度,默认值为 16384。
                    【注意:此属性值应用于消息处理过程的每个步骤。包括可以扩展消息或消息部分大小的一些步骤。特别是,加密可能会大大增加消息的大小】-->
          <!--maxBytesPerRead:获取并设置允许每次读取返回的最大字节数,默认值为 4096。
                    【注意:此配额与该传输级别在网络上接收的字节数密切相关,但其目的是控制每次读取时可以接收的数据量】-->
          <!--maxDepth:获取并设置最大嵌套节点深度,最大嵌套节点深度,默认值为 32。此配额设置 XML 的嵌套节点深度限制。
                    【注意:不太重要,一般来说常用的 XML 深度不大可能达到32层】-->
          <!--maxNameTableCharCount:获取并设置表名称中允许的最大字符数,表名称中允许的最大字符数,默认值为 16384。
                    【注意:暂时没用】-->
          <!--maxStringContentLength:获取并设置读取器返回的最大字符串长度,读取器返回的最大字符串长度,默认值为 8192。
                    【注意:这个根据实际需要配置下,因为默认长度 8192 对于稍大的对象序列化后的长度很可能不够用】-->
          <readerQuotas maxArrayLength="1073741824" maxStringContentLength="1073741824" />
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

 

Client

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="netTcpServiceBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"  maxReceivedMessageSize="1073741824">
          <security mode="None">
            <transport clientCredentialType="None"/>
          </security>
          <readerQuotas maxStringContentLength ="1073741824" maxArrayLength ="1073741824" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
    
      <endpoint address="net.tcp://localhost:8877/EastHotelService" binding="netTcpBinding"
               bindingConfiguration="netTcpServiceBinding"
               contract="EastWestWalk.Hotel.Service.IService.IEastHotelService"
               name="HotelServiceEndpoint"/>
               
    </client>
  </system.serviceModel>
</configuration>

 

以上是关于WCF配置文件的主要内容,如果未能解决你的问题,请参考以下文章

使用代码而不是配置文件将消息检查器添加到 WCF 服务

WCF配置问题(配置WCF跨域)

WCF入门教程四[WCF的配置文件]

通过C#代码调用WCF服务中的一个方法。不依赖配置文件等。求完整代码!!

WCF学习之旅—WCF服务配置(十四)

WCF