如何解决通过WCF服务传输大量数据超过64kb
| 我需要通过WCF服务传递超过64kb的数据。为此,我已经通过以下方式配置了服务器端(承载WCF服务):<services>
<service name=\"MyService\" behaviorConfiguration=\"MyServiceBehavior\" >
<endpoint address=\"\" binding=\"customBinding\" contract=\"MyContract\"
bindingName=\"testBinding\" bindingConfiguration=\"testBinding\" />
<endpoint address=\"mex\" binding=\"customBinding\" contract=\"IMetadataExchange\"
bindingName=\"testBinding\" bindingConfiguration=\"testBinding\" />
</service>
</services>
<bindings>
<customBinding>
<binding name=\"testBinding\" >
<textMessageEncoding>
<readerQuotas maxDepth=\"2147483647\"
maxStringContentLength=\"2147483647\"
maxArrayLength=\"2147483647\"
maxBytesPerRead=\"2147483647\"
maxNameTableCharCount=\"2147483647\" />
</textMessageEncoding>
<httpTransport transferMode=\"Buffered\"
maxReceivedMessageSize=\"2147483647\"
maxBufferSize=\"2147483647\"/>
</binding>
</customBinding>
</bindings>
和客户端(消耗服务):
<client>
<endpoint address=\"http://localhost:82/MyService.svc\"
binding=\"customBinding\" bindingConfiguration=\"testBinding\"
contract=\"MyContract\"
name=\"MyName\" />
</client>
<bindings>
<customBinding>
<binding name=\"testBinding\" >
<textMessageEncoding>
<readerQuotas maxDepth=\"2147483647\"
maxStringContentLength=\"2147483647\"
maxArrayLength=\"2147483647\"
maxBytesPerRead=\"2147483647\"
maxNameTableCharCount=\"2147483647\" />
</textMessageEncoding>
<httpTransport transferMode=\"Buffered\"
maxReceivedMessageSize=\"2147483647\"
maxBufferSize=\"2147483647\"/>
</binding>
</customBinding>
</bindings>
当我调用必需的方法时,我收到以下错误:
内容类型application / soap + xml;服务http:// localhost:82 / MyService.svc不支持charset = utf-8。客户端和服务绑定可能不匹配。
请指教,我的装订不匹配是什么?
谢谢。
解决方法
似乎您执行的步骤过多-过于复杂。为什么不只使用基于现有绑定的绑定配置?像这样:
<bindings>
<basicHttpBinding>
<binding name=\"largeBinding\"
maxBufferSize=\"2147483647\" maxReceivedMessageSize=\"2147483647\">
<readerQuotas
maxArrayLength=\"2147483647\" maxBytesPerRead=\"2147483647\"
maxNameTableCharCount=\"2147483647\" maxStringContentLength=\"2147483647\" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name=\"MyService\" behaviorConfiguration=\"MyServiceBehavior\" >
<endpoint
address=\"\"
binding=\"basicHttpBinding\"
bindingConfiguration=\"largeBinding\"
contract=\"MyContract\" />
<endpoint
address=\"mex\"
binding=\"mexHttpBinding\"
contract=\"IMetadataExchange\" />
</service>
</services>
在客户端定义完全相同的绑定配置,并在此使用它。
同样,用于元数据交换的MEX端点绝不要进行任何特殊设置-只需使用默认的mexHttpBinding
,并且不要为此配置任何绑定配置。
, 确保服务器配置文件中的服务名称与服务的标准名称匹配--4ѭ元素中的name属性。如果不匹配,则WCF将提供一个默认终结点,其绑定为basicHttpBinding(并且其期望的内容类型与客户端发送的内容类型不同)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。