我正在连接一个供应商提供的web ASMX服务,并通过网络发送一组数据。我的第一次尝试遇到了Visual Studio在app.config文件中默认设置的1分钟超时时间。我将其增加到10分钟,又遇到了超时。增加到1小时后,还是超时:
Error: System.TimeoutException: The request channel timed out while waiting for
a reply after 00:59:59.6874880. Increase the timeout value passed to the call to
Request or increase the SendTimeout value on the Binding. The time allotted to
this operation may have been a portion of a longer timeout. ---> System.TimeoutE
xception: The HTTP request to 'http://servername/servicename.asmx' has exceeded the allotted timeout of 01:00:00. The time allotted to this
operation may have been a portion of a longer timeout. ---> System.Net.WebExcept
ion: The operation has timed out
at System.Net.HttpWebRequest.GetResponse() [... lengthly stacktrace follows]
我联系了供应商。他们确认电话可能会持续一个多小时(别问我为什么,他们是我生命中的噩梦)。我将超时时间增加到10小时以确保安全。然而,网络服务调用仍然在1小时内超时。相关的app.config部分现在看起来像这样:
<basicHttpBinding>
<binding name="BindingName" closeTimeout="10:00:00"
openTimeout="10:00:00" receiveTimeout="10:00:00" sendTimeout="10:00:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
非常荒谬,但无论如何超时仍然在1小时内发生。不幸的是,每个更改都需要至少额外一小时来测试。我是否遇到了某个内部限制 - 是否有其他需要更改的超时设置?所有对这些设置的更改在一小时内都产生了预期效果。
感谢您能提供的任何帮助!