.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 框架组合