我有一个使用HTTPS在IIS中托管的WCF Web服务。服务和客户端应用程序都是用C#编写的。客户端应用程序所做的第一个Web服务调用需要15秒钟才能完成。一旦完成最初的呼叫,后续呼叫在大约100毫秒内完成。为了测试,我有一个简单的方法:string Ping(int val);它只是回传以字符串形式传入的数字。.NET中的初始Web服务调用需要很长时间
奇怪的是,一个千里之外的用户报告了这个问题,但我没有在我的开发机器上遇到它。我只看到第一个请求需要2到3秒。现在几乎每个客户都报告第一个请求需要超过15秒。
这是C#客户端的正常行为吗?有没有人遇到过这个问题?
我的Web服务绑定配置如下:
<basicHttpBinding>
<binding
name="BasicHttpBinding_IMyWebSvc"
maxBufferSize="16777216"
maxReceivedMessageSize="16777216"
messageEncoding="Mtom">
<readerQuotas
maxDepth="1024"
maxStringContentLength="262144"
maxArrayLength="16777216"
maxBytesPerRead="16777216"
maxNameTableCharCount="16777216"
/>
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
编辑:这个问题会很奇怪。
我写了一个测试客户端,使用了除了Ping()测试方法之外什么都没有的修剪代理代码。经过测试,它仍然花费了15秒以上。由于Ping()函数不需要大量缓冲区并且问题消失,因此开始更改客户端缓冲区大小。将缓冲区大小恢复到其原始值,问题不再回来。冉真实的客户和第一个电话在1.2秒内完成。现在我无法在我的开发PC上重现问题。
你用Wireshark来看看那里的延迟是从术语来的网络? – 2011-12-17 18:05:01
我会试一试。 – 2011-12-17 18:12:17
如果您能够从托管您的服务的网络外部进行连接,那可能会更好。我与Jon合作,我认为你遇到某种与网络有关的超时问题。 – 2011-12-17 18:25:13