我有一个WCF方法返回自定义对象列表及其大约20K记录。在我的本地机器上一切正常,但在实时服务器方法上无法产生任何响应。 我使用下面的绑定配置:
<bindings>
<basicHttpBinding>
<binding name="NewBinding0" closeTimeout="00:10:00" openTimeout="00:10:00"
sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
有人可以帮我解决这个问题吗?
亲切的问候, 米奇
答案 0 :(得分:1)
最后,我设法解决了这个问题。修复是在WCF服务器配置中添加以下设置。
<serviceBehaviors>
<behavior>
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
答案 1 :(得分:0)
将以下部分添加到应用程序配置文件中,然后确保它正在写入的文件夹跟踪存在(下例中的c:\ temp \ WCFLogs)。 您应该开始看到一个ServerWCFTraces.svclog文件被创建 - 它可能会说长度为0个字节,直到您停止服务或它决定刷新到磁盘。
重现失败案例后,在打开Visual Studio的计算机上打开日志文件(或从此处下载查看器:SvcTraceViewer from MSDN。
有一些说明可以在MSDN链接上使用该工具,但实际上您可以在活动窗格(左侧)中查找错误(以红色突出显示),然后查看失败的操作(右上方窗格)和在详细信息部分(右下方窗格)中,将会有一个内部异常的描述,它几乎总是告诉您哪个显式限制被破坏,以及要解决它的属性/属性增加。
<system.diagnostics>
<sources>
<source propagateActivity="true" name="System.ServiceModel" switchValue="Information, ActivityTracing">
<listeners>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing">
<listeners>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\temp\WCFLogs\ServerWCFTraces.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>