2016-07-22 118 views
1

我正在努力實現客戶端的要求。 我有一個Web服務,它反過來調用客戶端的Web服務。我們的服務使用webclient的UploadString()屬性向客戶端服務發送一個請求。在這裏我經常請求客戶端服務,所以我想保持連接活着。我開始知道在HTTP 1.1中有一個叫做「KeepAlive」允許持久連接。我的問題是,是否有可能通過C#代碼配置此Keepalive的超時屬性?在c#中更改保持活動狀態.net

感謝您的幫助:)

+0

相關:https://msdn.microsoft.com/en-us/library/system.net.servicepoint.settcpkeepalive(v=vs.110).aspx – 2016-07-22 13:12:27

+0

@x ...感謝您的答覆。但是,請讓我知道如何使用網絡客戶端實現它?對不起,我不是這方面的專家。 – Sudheesh

回答

0

要使用這個方法,你必須創建的WebClient派生的類,看到這個例子。你可以在那裏設置超時,保持活動,tcpkeepalive。而使用這個類,而不是Web客戶端:

public class WebClientExtended : WebClient 
    { 
    protected override WebRequest GetWebRequest(Uri uri) 
    { 
     var w = (HttpWebRequest) base.GetWebRequest(uri); 
     w.Timeout = 5000;  // Set timeout 
     w.KeepAlive = true; // Set keepalive true or false 
     w.ServicePoint.SetTcpKeepAlive(true, 1000, 5000); // Set tcp keepalive 
     return w; 
    } 
    } 
+0

謝謝@x ...似乎它的工作。你可以讓我知道什麼是保持活着的默認超時?還有可能使用上面的代碼進一步降低到這個默認值? – Sudheesh

+0

https://blogs.technet.microsoft.com/nettracer/2010/06/03/things-that-you-may-want-to-know-about-tcp-keepalives/ – 2016-07-27 08:39:18

+0

@X ...有沒有測試Keepalive的方式是否按預期工作? – Sudheesh