Evi*_*lDr 3 c# asp.net wsdl web-services
StackOverflow 上有很多类似的问题。如果这是重复的,我希望能稍微解释一下如何在我的上下文中应用其他解决方案。
我有一个 WebAPI 项目。此 WebAPI 依次调用 Web 服务 (WSDL),处理数据并返回给客户端:
[Client] ----> [My WebAPI] ----> [WSDL Server]
|
<-------- [My WebAPI] <---------
Run Code Online (Sandbox Code Playgroud)
WSDL 部分是基于 Java 的服务。在 VS2015 中我们可以毫无问题地使用它的唯一方法是将它添加为 Web 参考(对话框中的 2.0)。它工作得很好,根据需要使用强类型值,但今天我们看到了My WebApi和之间的超时WSDL Server。
在 SO 的其他答案中,我看到可以在 web.config 中<bindings>或通过代理配置超时期限,但鉴于我的 web.config 内容与其他人有很大不同,我看不出如何将其连接起来。下面的代码是VS2015消费WSDL服务时生成的:
<system.serviceModel>
<bindings />
<client />
</system.serviceModel>
<applicationSettings>
<MyWebAPI.Properties.Settings>
<setting name="MyWebAPIs_ThirdPartyWSDLService_GetData" serializeAs="String">
<value>https://wsdl.domain.com/webservices/services/GetData</value>
</setting>
</MyWebAPIs.Properties.Settings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)
我也无法在 c# 智能感知代码中找到任何关于超时的内容。任何帮助或指示将不胜感激。我已经阅读了大约 12 篇关于 SO 的帖子,但仍然无法弄清楚。
我不想回答我自己的问题,但我想我已经找到了答案(如果没有,我会删除)。这是显而易见的,但是在 SO 上阅读太多实际上让我偏离了方向,而且我在 VS 中检查了错误的课程。
使用时,第三方 Web 服务客户端类GetData()被迫从SoapHttpClientProtocol. 这个类派生自HttpWebClientProtocol,派生自WebClientProtocol.
WebClientProtocol有一个公共属性Timeout,以毫秒表示。
指示 XML Web services 客户端等待对同步 XML Web services 请求的答复到达的时间(以毫秒为单位)。
同步调用 XML Web services 的超时时间(以毫秒为单位)。默认值为 100000 毫秒。
将 Timeout 属性设置为 Timeout.Infinite 表示请求不会超时。即使 XML Web 服务客户端可以将 Timeout 属性设置为不超时,Web 服务器仍然会导致请求在服务器端超时。
因此,Timeout当实例化为 Web 服务客户端时,该属性可直接从代码中获得,我相信这是由于 VS 的神奇之处:
SomeComsumedWebService wsc = new SomeComsumedWebService();
SomeComsumedWebService.Timeout = 600000; // 10 minutes
var obj = SomeComsumedWebService.MethodToGetData();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7245 次 |
| 最近记录: |