2017-10-04 20 views
0

私は.NET 4.6.1 WebApiプロジェクトを作成しています。このプロジェクトの一環として、別のWebApiを呼び出す必要があり、そのためにHttpClientを使用したいと思います。HttpClientを使用してWebAPI内で呼び出しを行う

私の研究のオンラインからは、ガベージコレクションが正しく行われずメモリリークにつながる可能性があるため、using句内で通常のHttpClientを実行するだけでは対応できません。

例:次のように私は現在、それを使用しています:

using (HttpClient client = new HttpClient { Timeout = TimeSpan.FromSeconds(CONTENTFUL_TIMEOUT_IN_SECONDS) }) 
{ 
    responseText = await client.GetStringAsync(uri).ConfigureAwait(continueOnCapturedContext:false); 
} 

しかし、メモリリークにStackOverflowのと他人からの他の記事このリードで提案し、これを回避する方法は、HttpClientを単一のインスタンスを共有することであるとして。例えば、
など。 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/ HttpClientHandler/HttpClient Memory Leak

しかし私は、どのようにセットアップWebAPIの自体の内部からのHttpClientの共有「シングル」のインスタンスをするかわかりませんか?

答えて

0

あなたは、シングルトンパターンを実装する方法について見て参照する必要があります - https://msdn.microsoft.com/en-us/library/ff650316.aspx

次にあなたがHttpClientのシングルトンを作成し、APIからのすべてのHTTP呼び出しのため、それは責任を作ることができます。