我是WCF的新手,我正试图了解服务所采用的迷宫式配置。我有一个可以返回表的导出的休息服务,它大于默认的maxReceivedMessageSize
。所以我一直在尝试使用这个服务/端点的配置,我无处可去。如果我正在研究的是什么,我缺少什么?我只是将List作为JSON或XML返回,我需要能够返回超过默认阈值。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<!-- defin service -->
<service behaviorConfiguration="EPRestBehavior" name="EPRestDNS">
<endpoint address=""
bindingConfiguration="ApiExportBinding"
binding="webHttpBinding"
contract="IDNSRestService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="EPRestBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
...
</behaviors>
<bindings>
<!-- Customizations for REST service -->
<webHttpBinding>
<binding name="ApiExportBinding" maxReceivedMessageSize="10485760"
maxBufferPoolSize="10485760" maxBufferSize="10485760" closeTimeout="00:03:00"
openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00">
<readerQuotas maxDepth="32" maxStringContentLength="10485760"
maxArrayLength="10485760" maxBytesPerRead="10485760" />
<security mode="None" />
</binding>
</webHttpBinding>
</bindings>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
</webHttpEndpoint>
</standardEndpoints>
更新1 我已经删除了所有的配置,并尝试使用现有的webHttpEndpoint部分进行简化:
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="1000000000" />
</webHttpEndpoint>
</standardEndpoints>
具有相同的结果。 HTTP/1.1 502 Connection reset by peer
答案 0 :(得分:3)
这就是为什么WCF太可怕了。最后,我在服务器上创建了一个svclog,实际问题是在默认对象图中达到了极限。我添加了我想要实现的新限制,就是这样。 7个多小时只是为了这样一个愚蠢的事情。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, MaxItemsInObjectGraph = 2147483646)]
答案 1 :(得分:2)
是否在服务或客户端发生异常?一个常见的错误是您更改了服务器上的值,但忘记在客户端上也进行更改。