WCF协议basicHttpsBinding

通过https://   协议对外提供服务

服务端web.config

<system.web>
    <authentication mode="None"/>
    <compilation debug="true" targetFramework="4.5"/>
    <!--<pages controlRenderingCompatibilityVersion="4.0"/>-->
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <basicHttpsBinding>
        <binding name="BasicHttpsBinding_Common" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647" />
      </basicHttpsBinding>
    </bindings>
    <services>
      <service name="BeautySalon.BeautySalonWcfService.PermissionService.FunctionService">
        <endpoint address="" binding="basicHttpsBinding"         
        bindingConfiguration="BasicHttpsBinding_Common"
          contract="BeautySalon.BeautySalonWcfService.PermissionService.IFunctionService" 
  />
      </service>
    </services>

注意:服务端每个Web服务必须设置<service ...></service>节点声明契约,否则客户端找不到监听节点。

<system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="BasicHttpsBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IFunctionService" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
          textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"
          messageEncoding="Text">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
</basicHttpBinding>
      <basicHttpsBinding>
        <binding name="BasicHttpsBinding_Common" maxBufferSize="2147483647"
          maxReceivedMessageSize="2147483647">
          <security mode="Transport" />
        </binding>
      </basicHttpsBinding>
    </bindings>

<client>
<endpoint address="https://localhost/NewSpaServer/PermissionService/FunctionService.svc"
        binding="basicHttpsBinding" bindingConfiguration="BasicHttpsBinding_Common"
        contract="PermissionService.FunctionService.IFunctionService"
        name="BasicHttpBinding_IFunctionService" />
</client>

注意:客户端需同是声明:basicHttpBinding节点和basicHttpsBinding节点,basicHttpsBinding节点可以共用一个,而basicHttpBinding则不行,不知是为什么,也不知道为什么要这样配置?

生成本地开时使用的SSL证书:

makecert -r -pe -n "CN= localhost " -b 01/01/2018 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 
  -ss my -sr localMachine -sky exchange -sp 
  "Microsoft RSA SChannel Cryptographic Provider" -sy 12
 /// <summary>
    /// 本地开发时忽略证书验证
    /// 注意:只需要在第一次调用WCF时执行,之后无须再调用。使用时继承此类即可
    /// </summary>
    public class IgnoreCertificateErrorHandlerBase
    {
        #region 构造函数
        public IgnoreCertificateErrorHandlerBase()
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);
        }
        #endregion

        #region 属性
        static bool m_IsIgnoreCertificate = true;
        #endregion 属性结束

        #region 方法
        public static bool IgnoreCertificateErrorHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return m_IsIgnoreCertificate;
        }
        #endregion 方法结束
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值