我的服务器上运行了一个NetTcp WCF服务,以及一个异步调用该服务方法之一的客户端。
当服务器返回少量数据时,一切都很糟糕。但是当有大量数据需要返回时,客户端会立即崩溃,甚至没有捕获的异常。
从我所看到的情况来看,崩溃几乎是在服务器返回数据后立即发生的。
任何想法如何调试这个?是否有一些关于服务的设置我应该调整以允许我在此调用中返回大量数据?
答案 0 :(得分:1)
尝试增加maxReceivedMessageSize =“SomeMaxSize”
<binding name="BasicHttp" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="true" hostNameComparisonMode="StrongWildcard"
maxBufferSize="1000000" maxBufferPoolSize="524288" maxReceivedMessageSize="1000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
您还可以通过在web.config中添加以下部分来启用服务跟踪。
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
答案 1 :(得分:1)
我的方法是:
这应该以不同方式并行减少带宽,并解决问题。
答案 2 :(得分:0)
增加最大大小不是最佳解决方案,如果您的服务在某些时候托管在IIS中,它将崩溃。如果您使用NetTCP bindig,最好的方法是通过TCP公开Stream,查看here。