.NET4.5中WCF中默认生成的basicHttpsBinding的研究

Posted SzeCheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET4.5中WCF中默认生成的basicHttpsBinding的研究相关的知识,希望对你有一定的参考价值。

起因:

    使用.net4.5建立了一个空白的WCF服务。默认使用的绑定配置是basicHttpsBinding。

问题发现:

  1、用客户端进行服务引用,生成了默认的配置文件,其中绑定配置是basicHttpBinding。

  2、因为需要单次传递大批量数据,所以修改绑定配置,如下: 

   <basicHttpBinding>
        <binding name="BasicHttpBinding_IService" closeTimeout="00:10:00" receiveTimeout="00:10:00"
                sendTimeout="00:10:00"  maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" >
          <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
        </binding>
      </basicHttpBinding>

  3、运行测试,总是提示“413 Request Entity Too Large”。网上查找资料,基本都是说修改默认的Size,默认为4M, 修改到足够大就可以了。但是我明明已经在服务端和客户端都改了啊???

问题解决:

  研究了很久才解决,直接说结果吧。

  在.net 4.5的框架下,默认生成的绑定配置是basicHttpsBinding,是Https,多了一个S。

  然而我在服务端修改的是HTTPS里的绑定配置,没写HTTP的绑定配置,而在客户端,则是用的HTTP。 所以最终使用的是默认的HTTP配置,大小是4M,数据量一大,自然报错。

  说到这里,解决方法就很明显了。

结尾:

  HTTP方式效率还是低,明天使用TCP试试。

  

 

以上是关于.NET4.5中WCF中默认生成的basicHttpsBinding的研究的主要内容,如果未能解决你的问题,请参考以下文章

如何从现有的 WSDL 和 XSD 文件生成 WCF 服务主机

.NET 4.5.1 中的 WCF 客户端:使用 WebRequest 时如何启用 TLS 1.2?

当 Fiddler 运行 .Net 4.5 时,WCF 服务正在工作

ASP.NET MVC+WCF+NHibernate+Autofac 框架组合

在 .Net 4.5 中使用 Websocket 的示例 [关闭]

Web 服务 + IIS = 错误 404.3 [重复]