2016-05-13 37 views
1

StackOverflow上有大量similar問題。如果這是重複的,我希望稍微解釋一下如何在我的上下文中應用其他解決方案。作爲Web引用消耗時增加超時(不是服務引用)

我有一個WebAPI項目。這的WebAPI依次調用Web服務(WSDL),數據和處理返回給客戶端:

[Client] ----> [My WebAPI] ----> [WSDL Server] 
             | 
     <-------- [My WebAPI] <--------- 

的WSDL部分是一個基於Java的服務。我們可以在VS2015中毫無問題地使用它的唯一方法是將其作爲Web引用添加(在對話框中爲2.0)。它完美地工作,並根據需要提供強類型值,但是今天我們看到在My WebApiWSDL 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> 

我也找不到在C#IntelliSense代碼超時的任何提及。任何幫助或指針,將不勝感激。我已經閱讀了大約12篇文章,但仍然無法弄清楚。

回答

2

我討厭回答我自己的問題,但我想我找到了答案(如果沒有,我會刪除)。這是顯而易見的,但是對SO的太多閱讀實際上讓我偏離了課程,並且我正在檢查VS中的錯誤課程。

消耗時,第三方Web服務客戶端類GetData()被強制從SoapHttpClientProtocol派生。該類來源於HttpWebClientProtocol,源自WebClientProtocol

WebClientProtocol有一個公共財產Timeout,以毫秒爲單位表示。

指示XML Web服務客戶端等待對同步XML Web服務請求的答覆到達的時間(以毫秒爲單位)。

同步調用XML Web服務的超時時間(以毫秒爲單位)。默認值是100000毫秒。

將Timeout屬性設置爲Timeout.Infinite表示請求沒有超時。即使XML Web服務客戶端可以將Timeout屬性設置爲不超時,Web服務器仍然可以導致請求在服務器端超時。

因此,當作爲Web服務客戶端,這是我相信實例化Timeout屬性是從代碼可以直接因VS魔術:

SomeComsumedWebService wsc = new SomeComsumedWebService(); 
SomeComsumedWebService.Timeout = 600000; // 10 minutes 
var obj = SomeComsumedWebService.MethodToGetData();