gpt4 book ai didi

c# - 如何在异步 ASP.NET Web 服务调用上定义客户端超时?

转载 作者:行者123 更新时间:2023-11-30 13:11:32 25 4
gpt4 key购买 nike

今天,我搜索了一些时间来了解我们调用(外部)ASP.NET Web 服务的特定案例,并满足以下要求:

  • 调用必须异步进行
  • 必须实现超时,因为网络服务可能需要很长时间才能执行

在 Internet 和 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 引用)。

关于c# - 如何在异步 ASP.NET Web 服务调用上定义客户端超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6502669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com