我使用Xamarin开发服务器 - 客户端应用程序。 我使用WCF从服务器向客户端发送数据。 有时会发生超时异常。
我猜这个与服务器连接速度慢的问题。 通过快速Wi-Fi,3g,4g没问题。但如果连接速度低于3g,有时会发生超时。
我诊断出与WireShark的连接,并在超时时说下一个(见图)
请帮我解决这个问题。
答案 0 :(得分:0)
创建绑定时,您可以指定超时和读者配额。因此,您必须将超时范围提高到适当的值。您可以在代码和配置文件中执行此操作。
通过代码你可以这样做
var binding = new NetNamedPipeBinding()
{
OpenTimeout = TimeSpan.MaxValue,
CloseTimeout = TimeSpan.MaxValue,
SendTimeout = TimeSpan.MaxValue,
ReceiveTimeout = TimeSpan.MaxValue,
ReaderQuotas = { MaxStringContentLength = 2147483647, MaxBytesPerRead = 2147483647, MaxArrayLength = 2147483647 },
MaxBufferSize = 6553500,
MaxReceivedMessageSize = 6553500
};
通过配置文件,你可以这样做
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="longTimeoutBinding"
receiveTimeout="00:10:00" sendTimeout="00:10:00">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="longTimeoutService"
behaviorConfiguration="longTimeoutBehavior">
<endpoint address="net.tcp://localhost/longtimeout/"
binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" />
</service>
....