我正在开发一个使用asmx Web服务在IIS7中导入数据的Web应用程序。我们有一个Windows服务选择要导入的文件并通过Web服务发送它。我在1分钟后的大量导入过程中收到以下错误:
请求频道在等待回复后超时 00:00:59.9843750。增加传递给调用的超时值 请求或增加Binding上的SendTimeout值。时间 分配给这个操作可能是一个更长的一部分 超时。
我看过很多帖子,其中的建议是没有长时间运行的网络服务电话。我原则上同意,但这是一个流量低,内部网站。除非另有证明,否则我认为重新构建系统其他部分的工作量将比更新超时更长。
到目前为止,我们已尝试更新web.config中的basicHttpBinding属性,特别是openTimeout,receiveTimeout,sendTimeout和closeTimeout属性。行为没有变化。
我们还尝试在构造对象后调用Web服务的代码中设置这些属性。仍然没有运气。
我查看了IIS设置,但没有看到任何当前设置为60秒的超时值。我们还尝试将web.config中的executionTimeout提升为无效。
我错过了什么配置值?还有其他方法可以修改超时吗?
更新
根据要求,以下是配置:
的App.config
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ImportServiceSoap" closeTimeout="00:02:00" openTimeout="00:02:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="1265536" maxBufferPoolSize="12524288" maxReceivedMessageSize="1265536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://mysite.com/Importservice.asmx"
binding="basicHttpBinding" bindingConfiguration="ImportServiceSoap"
contract="ImportService.ImportServiceSoap" name="ImportServiceSoap" />
</client>
</system.serviceModel>
</configuration>
Web.config(删除,删除了连接字符串):
<configuration>
<appSettings>
<system.web>
<roleManager enabled="false" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider" />
<siteMap defaultProvider="MenuElementsProvider">
</siteMap>
<compilation debug="false" targetFramework="4.0">
</compilation>
<customErrors mode="RemoteOnly" defaultRedirect="Shared/Internal_Server_Error.html">
<error statusCode="404" redirect="Shared/Internal_Server_Error.html" />
<error statusCode="500" redirect="Shared/Internal_Server_Error.html" />
</customErrors>
<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
<allow users="*" />
</authorization>
<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
<sessionState mode="InProc" stateConnectionString="tcpip=127.1.0.1" cookieless="false" timeout="30" />
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US" />
<httpRuntime maxRequestLength="102400" requestValidationMode="2.0" executionTimeout="14400" />
</system.web>
<location path="DefaultWsdlHelpGenerator.aspx">
<system.web>
<pages styleSheetTheme="" />
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
</system.web>
</location>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</appSettings>
</configuration>
答案 0 :(得分:1)
您是在代码中还是仅在客户端的app.config中更新绑定超时?我已经看到更改app.config设置会从客户端Web服务的orignal创建中被忽略 - 因此即使app.config已更改,旧设置也会保留。 MDV