2016-07-22 4 views
1

私はクライアントから要件を達成するのに苦労しています。 私は、クライアントのWebサービスを呼び出すWebサービスを持っています。私たちのサービスは、webclientのUploadString()プロパティを使用してクライアントサービスにリクエストをPOSTします。クライアントサービスへのリクエストが頻繁にあるので、接続を維持したいと思います.HTTP 1.1では、永続的な接続を可能にする "キープアライブ"。私の質問は、このキープアライブのタイムアウトプロパティをC#コードで設定できるかどうかです。c#.netのキープアライブプロパティを変更する

はあなたの助けに感謝:)

+0

関連:https://msdn.microsoft.com/en-us/library/system.net.servicepoint.settcpkeepalive(v=vs.110).aspx –

+0

@x ...あなたの返信ありがとうございます。しかし、私はどのように私はそれをWebクライアントを使用して達成することができますお知らせくださいできますか?申し訳ありませんが、私はこの分野の専門家ではありません。 – Sudheesh

答えて

0

そのメソッドを使用するには、この例を参照して、Webクライアントからの派生クラスを作成する必要があります。タイムアウト、キープアライブ、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/ –

+0

@X ...ありますかキープアライブをテストする方法は期待通りに機能していますか? – Sudheesh