默認情況下,WCF中的Http傳輸通道使用持久HTTP連接。如何控制這些連接的保持活動超時?默認值是100秒。通過在Procmon中監控應用程序,我發現了這個價值。我沒有在http傳輸綁定元素中找到任何配置此超時的設置。有沒有可以控制超時的.NET類?如何在WCF中爲HTTP連接設置保持活動時間間隔
回答
從this answer和我可以讀的here,它看起來像你想創建一個自定義http綁定,並設置inactivityTimeout
屬性。
從MSDN文章:
<bindings> <customBinding> <binding name="Binding1"> <reliableSession acknowledgementInterval="00:00:00.2000000" enableFlowControl="true" maxTransferWindowSize="32" inactivityTimeout="00:10:00" maxPendingChannels="128" maxRetryCount="8" ordered="true" /> <security mode="None"/> <httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" proxyAuthenticationScheme="Anonymous" realm="" useDefaultWebProxy="true" /> </binding> </customBinding> </bindings>
不。我想設置HTTP保持活動狀態而不是可靠會話保持活動狀態。 HTTP協議規範中描述了HTTP保持活動狀態。 – 2010-08-24 14:17:50
像HTTP 2616(http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.1)一樣,HTTP連接似乎應該是持久的。 – louisgab 2010-08-24 18:24:10
我不這麼認爲。 RFC表示HTTP實現應該實現HTTP持久連接。並不是只應該使用持續連接。 – 2010-08-25 07:34:54
這個怎麼樣?似乎它可能是您的IIS服務器的功能,與WCF服務無關?我知道這個鏈接適用於IIS6,但也許它是IIS7中類似的基礎? http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/73566f83-c257-4941-8ed8-7ae45b2e7985.mspx?mfr=true
我已經嘗試在IIS上設置連接超時,但它不起作用。這與保持活動設置無關。無論如何,我會在接下來的幾天再嘗試一次。如果它有效,我會設置新的獎勵和獎勵你。 – 2010-08-25 22:00:07
這聽起來像你想調整Keep-Alive
HTTP標頭。您應該閱讀HTTP保持存活的this article,並首先確定這是否值得你花時間。
如果是,請嘗試創建一個Message Inspector。這應該允許您修改發送的每封郵件的HTTP標頭:
public class KeepAliveMessageInspector : IClientMessageInspector
{
// ...
public object BeforeSendRequest(
ref System.ServiceModel.Channels.Message request,
System.ServiceModel.IClientChannel channel)
{
// Add/modify the Keep-Alive header
var httpRequestMessage = new HttpRequestMessageProperty();
httpRequestMessage.Headers.Add("Keep-Alive", "9000");
request.Properties.Add(
HttpRequestMessageProperty.Name, httpRequestMessage);
return null;
}
// ...
}
這個想法很有趣。我看到了與卡西尼交流的情況,但我認爲這不是標準頭。無論如何,我會在接下來的幾天內嘗試。如果它有效,我會設置新的獎勵和獎勵你。 – 2010-08-25 22:02:26
順便說一句。我不需要使用它。我只是想知道是否有可能以某種方式改變它,以及默認值100s來自哪裏。 – 2010-08-25 22:03:17
@Ladislav Mrnka:對不起,你可以設置或閱讀這個HTTP保持活着的值。如果是的話,我會非常有興趣瞭解更多。謝謝 – 2014-06-06 12:15:12
我找到了解決方案。問題是底層內核http.sys有它自己的超時,它會中斷連接。
http://mmmreddy.wordpress.com/2013/07/11/wcf-use-of-http-transport-sharing-persistent-tcp-sessions/
netsh http add timeout timeouttype=idleconnectiontimeout value=120
而且,這個問題是類似於此What 130 second timeout is killig my WCF streaming service call?
- 1. HTTP保持活動連接曾派在平均時間
- 2. 保持連接存活具體時間
- 3. 如何在一段時間間隔後使HTTP連接超時/斷開連接?
- 4. WCF REST流保持活動連接
- 5. 如何保持HTTP連接活着?
- 6. 爲cookies設置最長不活動時間間隔?
- 7. HTTP連接:保持活躍
- 8. 如何在活動之間保持FTP連接(或任何連接對象)
- 9. HTTP響應連接保持活動
- 10. 如何在HttpContext中的活動之間保持HTTP會話cookie?
- 11. 如何保持動畫之間的時間間隔?
- 12. Tornado AsyncHTTPClient HTTP持久連接支持(HTTP保持活動)
- 13. 如何設置間隔時間?
- 14. 如何設置tickmarks的時間間隔?
- 15. 發送連接頭設置爲保持活動狀態
- 16. 在活動之間保持locationListener活動
- 17. 在java中設置的時間間隔
- 18. 手動設置間隔時間setInterval
- 19. Javascript - 設置時間間隔
- 20. 設置ZeroMQ重新連接間隔C#
- 21. 如何使Flask /保持Ajax HTTP連接處於活動狀態?
- 22. 在swiftmailer的指定時間後保持連接存活
- 23. 如何爲其中一個視圖設置時間間隔
- 24. 如何在iOS上爲iBeacon設置掃描時間間隔?
- 25. 如何設置鍵盤自動完成時的時間間隔?
- 26. jQuery中使用設置間隔時,如何清除間隔?
- 27. 保持活動HTTP連接的正確超時值
- 28. 如何在所有活動中保持套接字連接
- 29. 如何在查詢之間設置時間間隔?
- 30. 如何在多個活動之間保持連接到Android服務?
感謝後,但並沒有解答的問題。問題不是關閉保持活動,而是關於設置保持活動超時。所以我想保持活力,我想控制它的持續時間。 – 2010-08-23 21:22:14
未找到網址,很遺憾 – Kiquenet 2012-11-19 12:04:44