c# – 如何在异步ASP.NET Web服务调用上定义客户端超时?
发布时间:2020-12-15 19:44:50 所属栏目:百科 来源:网络整理
导读:今天我已经搜索了一些特定的案例来调用具有以下要求的(外部)ASP.NET Web服务: 调用必须异步完成 必须实现超时,因为Web服务可能需要很长时间才能执行 在互联网和StackOverflow上出现了很多关于这个主题的问题,但要么是过时的,要么建议使用仅适用于同步调用的
今天我已经搜索了一些特定的案例来调用具有以下要求的(外部)ASP.NET Web服务:
>调用必须异步完成 在互联网和StackOverflow上出现了很多关于这个主题的问题,但要么是过时的,要么建议使用仅适用于同步调用的WebRequest.TimeOut属性. 一种替代方法是使用System.Threading.Timer.在开始呼叫之前启动计时器,并在到达TimerCallback时取消它. 但是,我认为对这种情况应该有一种更常见的方法.不幸的是到目前为止找不到它.任何人都有想法在异步Web服务调用上设置客户端超时? 提前致谢. 解决方法
请检查你的app.config它将有一些servicemodel设置,它有各种可配置的值.
当我添加新的服务参考时,我可以在app.config中看到以下内容, <system.serviceModel> <bindings> <basicHttpBinding> <binding name="HeaderedServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 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://localhost/MyService.asmx" binding="basicHttpBinding" bindingConfiguration="HeaderedServiceSoap" contract="WSTest.HeaderedServiceSoap" name="HeaderedServiceSoap" /> </client> </system.serviceModel> 尝试再次删除和添加引用,确保您的应用程序的目标框架是4.0,并且您正在添加服务引用(不是Web引用). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |