[英]How do I change timeout on an IIS hosted WCF service?
我們在IIS中托管了WCF服務。 我可以從日志文件中看到發送執行時間超過3分鍾的請求的客戶端收到HTTP 503(服務不可用)錯誤。
如何更改超時? 為了測試它的工作原理,我將超時時間減少到3秒,以確保它實際超時。
我試過了
<system.web>
<httpRuntime executionTimeout="3"/>
</system.web>
這似乎什么都不做。
我也試過改變綁定無濟於事。
<basicHttpBinding>
<binding name="basicHttp" receiveTimeout="00:00:03" sendTimeout="00:00:03" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
注意,我試圖讓WCF服務在我們控制的持續時間后返回某種失敗。 我不期望花費超過預期的請求終止。
在我撕掉頭發之前最感謝的任何幫助。
只是為了澄清......
該服務已啟動並運行了幾個月。 但是在處理偶爾長時間運行的請求時,客戶端會在3分鍾后收到HTTP 503響應。 在后台我們可以看到請求已正確處理,但已花了> 5分鍾。 顯然,到目前為止,由於客戶端已收到錯誤響應,為時已晚。
其他請求正在正常處理。
此時系統的負載非常低。 實際上,這是一個測試環境,交易是一次一個,沒有重疊。
我也非常確定綁定是否連接到端點。 我在WCF配置編輯器中打開了配置文件,所有內容都正確鏈接。
甚至可以在WCF中配置此時的超時? 在某種程度上我會理解,如果沒有,但為什么會返回HTTP 503錯誤?
我們真正想做的就是控制503響應返回之前的時間長度。
通常,當我對對服務端點沒有影響的綁定進行更改時,這是因為綁定未連接到端點。
如果現在所有內容都已獲得503並且之前有效,則可能是作為應用程序池標識的用戶帳戶具有過期密碼。
如果它適用於某些調用而不適用於其他調用,並且負載已經增加,則可能是客戶端沒有關閉連接並且您達到了最大並發調用數的默認限制。
經過IIS和測試WCF服務的大量實驗,我無法重現問題 - 即使在同一台服務器上也是如此。 只有公司內部的另一個團體才能看到這個問題。
我可以強制執行HTTP 503錯誤的唯一方法是使應用程序池脫機,但是這可以預測會在請求進入時立即返回錯誤。
進一步調查顯示,與來自IIS的503響應相關聯的HTML與返回給客戶端的HTML不同。
不可否認,這尚未得到證實,但我們得出結論,問題是由客戶端和服務器之間的某些網絡組件引起的。
確實存在一個代理,它正在返回超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.