簡體   English   中英

WCF服務端超時未執行

[英]WCF Service Side Timeout not executing

我有一個配置為使用basichttpbinding的WCF服務。我想測試服務器端超時,但是在更改配置時看不到任何更改。

這是我的綁定:

    <binding name="DefaultBasicBinding" closeTimeout="00:00:30" openTimeout="00:00:30" sendTimeout="00:00:30" maxBufferSize="4194304" maxBufferPoolSize="4194304" maxReceivedMessageSize="4194304">
      <readerQuotas maxDepth="100" maxStringContentLength="1000000" maxArrayLength="1000000" maxBytesPerRead="1000000" />
    </binding>

我已經研究了很多,無法使其正常工作。 我正在使用wcf測試客戶端來調用有問題的服務,該服務的客戶端超時時間為10分鍾。

我也有一種服務行為,該行為具有30秒的事務超時。 該服務托管在本地IIS中,其中將編譯調試設置為false,將httpruntime執行超時設置為30秒。

    <httpRuntime executionTimeout="30" maxRequestLength="67108864"/>

我的服務呼叫持續存在一項服務,該服務最終會調用1分半鍾的定時存儲過程。 每當我調用該服務時,它都會成功執行。

當我將發送超時更改為一分鍾之內的任何時間時,都看不出任何區別。

似乎哪里都沒有答案,而且我還讀到WCF不支持服務端超時?

我需要這方面的幫助。 提前致謝。

該過程涉及四個超時值。 其中三個涉及客戶端,而只有一個適用於服務器端。

客戶端

openTimeout:嘗試打開與WCF的連接時超時將開始。
closeTimeout:嘗試關閉與WCF的連接時超時將開始。
sendTimeout:這是超時,它指定客戶端可以等待多長時間來完成傳輸數據寫入,直到引發異常。

服務器端

ReceiveTimeout:這是超時,用於指定從接收請求開始到消息被處理,服務可以等待多長時間。 這是服務器端設置。 當您向服務發送大消息並且服務需要長時間處理時,您將需要增加此設置。

如果我理解正確,那么您需要在服務器端使用RecieveTimeout才能達到所需的結果。

綁定超時旋鈕的簡要說明...

客戶端:

SendTimeout用於初始化OperationTimeout,該操作控制發送消息的整個交互過程(包括在請求-答復情況下接收答復消息)。 從CallbackContract方法發送回復消息時,此超時也適用。 打開和關閉通道時(沒有傳遞明確的超時值時)使用OpenTimeout和CloseTimeout。 不使用ReceiveTimeout。 服務器端:

發送,打開和關閉超時與客戶端相同(用於回調)。 ServiceFramework層使用ReceiveTimeout初始化會話空閑超時。

從這篇文章 看看並重新檢查您的配置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM