Runtime: рд╕рд┐рдВрдЧрд▓рдЯрди HttpClient DNS рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдЕрдЧре░ 2016  ┬╖  77рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: http://byterot.blogspot.co.uk/2016/07/singleton-httpclient-dns.html , рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдЭрд╛ HttpClient рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк' рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА рдЬрд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдлрд▓рддрд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ DNS рд░рд┐рдХреЙрд░реНрдб рдЕрдкрдбреЗрдЯ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ ConnectionLeaseTimeout рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди -1 рдЕрдирдВрдд рдкрд░ рд╕реЗрдЯ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдирд┐рдкрдЯрд╛рди рдкрд░ рд╣реА рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИред

рдлрд┐рдХреНрд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗрд╡рд╛ рдмрд┐рдВрджреБ рдкрд░ рдореВрд▓реНрдп рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реИ:

var sp = ServicePointManager.FindServicePoint(new Uri("http://foo.bar/baz/123?a=ab"));
sp.ConnectionLeaseTimeout = 60*1000; // 1 minute

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдЬ .NET Core рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╛ рддреЛ ServicePointManager рдХреЛ .NET рдХреЛрд░ рдкрд░ рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╕рдорд╛рди рд╕рдордХрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

area-System.Net.Http enhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореБрджреНрджрд╛ рд╣реИред @darrelmiller рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╕рдордЭ рдХреА рдХрдореА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Azure рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЫреЛрдЯреЗ рдЯреАрдЯреАрдПрд▓ рдХреЗ рд╕рд╛рде рдбреАрдПрдирдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдореЗрдЬрдмрд╛рди рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЕрд╕реНрд╡рд╕реНрде рд╣реИ рдФрд░ рд╕реА рдХрдиреЗрдХреНрд╢рди рдЬрд╛рд░реА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдмрдВрдж рдХрд░реЗрдВ ред рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗрд╡рд▓ рдЕрд╕реНрд╡рд╕реНрде рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкреЗрд░реЗрдВрдЯ рд╣реИ ... рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ, рдПрдХ рдЯреНрд░реИрдлрд┐рдХ рдореИрдиреЗрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрдерд┐рд░ HttpClient рдХреЗ рд╕рд╛рде DNS (рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрднреА рднреА рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрд╕реНрдЯ рдЕрд╕реНрд╡рд╕реНрде рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдиреЗрдЯрдХреЛрд░ 1.1 рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╡реИрд╕реЗ рднреА рдПрдХ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдореВрд▓ рд░реВрдк рд╕реЗред

рд╕рднреА 77 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдбрд┐рдлрд╝реЙрд▓реНрдЯ 60secs рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЬреЛ рдЪрд╛рд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред https://github.com/dotnet/corefx/blob/d0dc5fc099946adc1035b34a8b1f6042eddb0c75/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs#L76

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╣реА рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╡рд╣ рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реИ, рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬрдЯрд╛рдЗрдордЖрдЙрдЯ рдирд╣реАрдВред

рдЬреИрд╕рд╛ рдХрд┐ https://msdn.microsoft.com/en-us/library/system.net.servicepoint.connectionleasetimeout.aspx рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ, рдЗрд╕реЗ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕рдордп-рд╕рдордп рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди .NET рдХреЛрд░ рдкрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

@onovotny рд╣рд╛рдБ рдпрд╣ рдПрдХ рдЕрдЬреАрдм рдЪреАрдЬ рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реА рдХрдиреЗрдХреНрд╢рди рдХрд░рдиреЗ рд▓рдЧрддреА рд╣реИ рдмрдВрдж рдХрд░реЗрдВ ред рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╣реИред

@darrelmiller рддреЛ рдпрд╣ рдореЗрд░реЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ ... рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рдЬреЛ рдореВрд▓ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд▓рд╛рдн рд╣реЛрдЧрд╛ред

@onovotny , .NET рдХреЛрд░ рдореЗрдВ рдХреЛрдИ ServicePointManager рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ .NET Framework (рдбреЗрд╕реНрдХрдЯреЙрдк) рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ UserVoice рдпрд╛ Connect рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓реЗрдВред

@onovotny рдореВрд▓ рдореБрджреНрджрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐, рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ DNS рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП A рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рднреА рдЕрдиреБрд░реЛрдз рдирдП IP рдкрддреЗ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЙрд╕ DNS рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реЛрд╕реНрдЯ рдП рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХ рд╕реА рдХрдиреЗрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдмрдВрдж рдХрд░реЗрдВ ред рдпрд╣ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХрдиреЗрдХреНрд╢рди рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕реА рдХрдиреЗрдХреНрд╢рди рднреЗрдЬрддрд╛ рд╣реИ

рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдореБрджреНрджрд╛ рд╣реИред @darrelmiller рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╕рдордЭ рдХреА рдХрдореА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Azure рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЫреЛрдЯреЗ рдЯреАрдЯреАрдПрд▓ рдХреЗ рд╕рд╛рде рдбреАрдПрдирдПрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдореЗрдЬрдмрд╛рди рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЕрд╕реНрд╡рд╕реНрде рд╣реИ рдФрд░ рд╕реА рдХрдиреЗрдХреНрд╢рди рдЬрд╛рд░реА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдмрдВрдж рдХрд░реЗрдВ ред рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХреЗрд╡рд▓ рдЕрд╕реНрд╡рд╕реНрде рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкреЗрд░реЗрдВрдЯ рд╣реИ ... рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ, рдПрдХ рдЯреНрд░реИрдлрд┐рдХ рдореИрдиреЗрдЬрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрдерд┐рд░ HttpClient рдХреЗ рд╕рд╛рде DNS (рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрднреА рднреА рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрд╕реНрдЯ рдЕрд╕реНрд╡рд╕реНрде рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдиреЗрдЯрдХреЛрд░ 1.1 рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╡реИрд╕реЗ рднреА рдПрдХ рдирд╣реАрдВ рджреЗрдЦрддрд╛, рдореВрд▓ рд░реВрдк рд╕реЗред

@ kudoz83 рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдПрдХ рд╣реЛрд╕реНрдЯ рдХреЛ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрдм рдЯреНрд░реИрдлрд┐рдХ рдореИрдиреЗрдЬрд░ рдиреЗ DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд╣рд╛

рдЬрдм рдЙрд╕ DNS рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реЛрд╕реНрдЯ A рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрддрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдореВрд▓ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ рдХрд┐ рдЙрд╕реЗ c рдХрдиреЗрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдмрдВрдж рдХрд░реЗрдВ рддреЛ рдЖрдкрдХреЗ

  • рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реЗ рд╕рдордп-рд╕рдордп рдкрд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЙрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рд▓рд╛рдЧрдд рдХрд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднреБрдЧрддрд╛рди рдХрд░реЗрдВ
  • рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░реЗрдВ рдХрд┐ рдЙрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрдм рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реЛ рдХрд┐ DNS рдХрдм рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдФрд░ рдореЗрд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдореВрд▓ рдореБрджреНрджрд╛ рдПрдХ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЙрддреНрдкрд╛рджрди рдФрд░ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕реНрд▓реЙрдЯ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдирд┐рдЧрд░рд╛рдиреА рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреЛрдиреЛрдВ рдкрд░рд┐рджреГрд╢реНрдп DNS/рд╕реНрд▓реЙрдЯ рд╕реНрд╡рд┐рдЪ рдХреА рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

AFAIK рдЕрд╕рдлрд▓ рд╣реЛрд╕реНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рдлрд▓ рд░рд╣рд╛ рд╣реИ? рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдореВрд▓ рдкреЛрд╕реНрдЯ рд╡рд┐рдлрд▓рддрд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИред

Azure рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдпрд╣рд╛рдБ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-monitoring

рдпрд╣ рдбреАрдПрдирдПрд╕ рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдФрд░ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ - рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ред DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдореИрдиреЗрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Azure рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдПрдХ HttpClient рдХреЗ рд▓рд┐рдП DNS рд░рд┐рдлреНрд░реЗрд╢ рдкрд░ TTL рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдП рдмрд┐рдирд╛ рдЕрдЪрд╛рд░ рдореЗрдВ рд╣реИрдВред

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреА рдЕрдкрдиреА рдПрдЬрд╝реВрд░ рд╕реЗрд╡рд╛ рдкреНрд░рд╕рд╛рдж рдХреЗ рд╕рд╛рде рдмрд╛рдзрд╛рдУрдВ рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рдЬреЛ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИред рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рднреА рд╕рдорд╛рди рд╕реЗрд╡рд╛ (рдИрдЬреА рдЕрдореЗрдЬрд╝реЕрди рд░реВрдЯ 53) рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдФрд░ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХреА рдЫреЛрдЯреА рдбреАрдПрдирдПрд╕ рдЯреАрдЯреАрдПрд▓ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред

рдЬрд╛рд╣рд┐рд░ рд╣реИ рдореБрдЭреЗ рдпрд╣ рдзрд╛рдЧрд╛ рдорд┐рд▓рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ DNS рд╡рд┐рдлрд▓рддрд╛ рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ HttpClients (рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдХреАрдордд рдкрд░) рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

AFAIK рдЕрд╕рдлрд▓ рд╣реЛрд╕реНрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╕рдлрд▓ рд░рд╣рд╛ рд╣реИ?

рдпрджрд┐ рдХреЛрдИ "рд╡рд┐рдлрд▓" рд╣реЛрд╕реНрдЯ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб 503 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдореВрд▓ рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЕрд╕рдлрд▓ рдореЗрдЬрдмрд╛рди рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рд╕рдХреНрд░рд┐рдп рдЯреАрд╕реАрдкреА/рдЖрдИрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреБрд▓рд╛ рдирд╣реАрдВ рд░рдЦреЗрдЧрд╛ред

рдЬрдм рдЕрд▓реА рдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд▓рд╛рдпрд╛, рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдареЛрд╕ рдерд╛ рдХрд┐ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ рдФрд░ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЖрдк рдПрдХ рдореВрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдк 5XX рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ, рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HttpMessageHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдЖрд╕рд╛рди, рдмрд╕ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ c onconnection: Close рдЬрдм рднреА рдпрд╣ 5XX рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рд▓реЗрдВред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рд╡рд╣ HttpClient рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд HttpHandler рдпрд╛ рдЙрд╕рдХреЗ рдиреАрдЪреЗ рднреА рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ HttpHandler рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ HTTP рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЬрдм рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ DNS рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдЪреБрдиреМрддреА рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ .net рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ HTTP рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ .net рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред

рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬрдЯрд╛рдЗрдордЖрдЙрдЯ рдЬреИрд╕рд╛ рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдХреЛрдИ рд╡рд┐рдлрд▓рддрд╛ рд╣реБрдИ рд╣реЛ рдпрд╛ рдирд╣реАрдВ? рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдмреЗрд╣рддрд░ рдЙрдкрд╛рдп рд╣реИ?

рдорд╛рдлрд╝ рдХрд░рдирд╛,

рдореБрдЭреЗ рдХрд▓ рдЬреИрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЙрддрдирд╛ рдЬреБрдЭрд╛рд░реВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рджрд┐рди рдЦрд░рд╛рдм рдЪрд▓ рд░рд╣рд╛ рдерд╛ред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ ConnectionLeaseTimeout рдХрд╡рд░ рдХреЗ рдиреАрдЪреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдЧреА рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдирд┐рдкрдЯрд╛рд░реЗ рддрдХ рдкрд┐рдЫрд▓реЗ рдбреАрдПрдирдПрд╕ рд▓реБрдХрдЕрдк рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ рдирдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирдпрд╛ рдбреАрдПрдирдПрд╕ рд▓реБрдХрдЕрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдорд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ...

@ kudoz83 рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рд╣рдо рд╕рднреА рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рд╣реА рджрд┐рди рд╣реЛрддреЗ рд╣реИрдВ :-)

рдЬреЛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрдиреЗрдХреНрд╢рдирд▓реАрдЬрдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдЪрдореБрдЪ рдПрдХ рдЯрд╛рдЗрдорд░ рд╣реИ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ ServicePointManager рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреЛрд░ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдпрд╣ "рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди" рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

рдПрдХ Win32 рдХреЙрд▓ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдЬреЛ DNS рдХреНрд▓рд╛рдЗрдВрдЯ рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреАред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдирдП рдХрдиреЗрдХреНрд╢рди DNS рд▓реБрдХрдЕрдк рдХрд░реЗрдВред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣реИред

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ .net рдХреЛрд░ рдореЗрдВ, HTTP рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкреНрд░рдмрдВрдзрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдУрдПрд╕ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдирдЬрд╝рджреАрдХреА Win32 API WinHttpOpen рдкрд░ рдХреЙрд▓ рд╣реИ https://github.com/dotnet/corefx/blob/master/src/System.Net.Http.WinHttpHandler/src/System/Net/Http/WinHttpHandler.cs# L718 рдХреЛрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ _sessionHandle рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рд▓ рд╕рдХреЗред рдЖрдк рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OS рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХрдо рд╕реЗ рдХрдо рдореИрдВ рдЗрд╕реЗ рдРрд╕реЗ рд╣реА рд╕рдордЭрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдХреЗрд╡рд▓ DNS рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдкрд░ рдмрд╣реБрдд рдХрдо TTL рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Azure рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрджрд┐ рдЖрдк рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдПрдХ рдХрдо рдЯреАрдЯреАрдПрд▓ рдХреЛ рдПрдХ рдореГрдд рд╕рд░реНрд╡рд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

WinHttpHandler рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рддрд░реАрдХреЗ рдХрд╛ рдЙрд▓реНрдЯрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ OS рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде HTTP / 2 рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдореБрдлреНрдд рдореЗрдВ рдорд┐рд▓рддреА рд╣реИрдВред рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

@darrelmiller

[рдХрдиреЗрдХреНрд╢рдирд▓реАрдЬрдЯрд╛рдЗрдордЖрдЙрдЯ] рд╕рд░реНрд╡рд┐рд╕рдкреЙрдЗрдВрдЯрдореИрдиреЗрдЬрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХреЛрд░ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ServicePoint.ConnectionLeaseTimeout .Net Standard 2.0/.Net Core 1.2 рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд░рд╣рд╛ рд╣реИред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП WinHttpHandler рдХрдиреЗрдХреНрд╢рди рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗред)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдВрдЪрд╛рд░ рд╣реИ: рдбреАрдПрдирдПрд╕ рдЯреАрдЯреАрдПрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ HTTP/рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдирдП HTTP рдХрдиреЗрдХреНрд╢рди DNS рд▓реБрдХрдЕрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджрд┐рдП рдЧрдП рд╣реЛрд╕реНрдЯ рдкрддреЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдХрдиреЗрдХреНрд╢рди рдкрд░ рдХрдИ HTTP рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ HTTP рдХрдиреЗрдХреНрд╢рди (рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди) рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ DNS рд▓реБрдХрдЕрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЗрд╕рд▓рд┐рдП рднрд▓реЗ рд╣реА рдЖрдк рдПрдХ рдХрдиреЗрдХреНрд╢рди рдкрд░ 1000 рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рдиреЛрдВ рддрдХ рдЪрд▓рддрд╛ рд╣реИ, DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХрдиреЗрдХреНрд╢рди рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдирдП HTTP рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдирдпрд╛ HTTP рдЕрдиреБрд░реЛрдз

рдЗрд╕ DNS рд░рд┐рдлреНрд░реЗрд╢ рдХрд╛ HttpClient рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ HttpClientHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рд╕реНрд╡рдпрдВ HttpWebRequest рд╕реЙрдХреЗрдЯ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдХрд┐рд╕реА рднреА DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рдЙрд╕ рд╕реНрдЯреИрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ServicePointManager рдЙрд╕ рд╕реНрдЯреИрдХ рдореЗрдВ ServicePoint рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВред ServicePointManager DNS рдЦреЛрдЬ рдЬреЛ рдЖрдк рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреНрдпреВрдирддрдо рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рд╕рдВрдЪрдп рдХрд░рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдорддрд▓рдм рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЦреБрд▓рд╛ рд░рд╣рдирд╛ рд╣реИред рдпрджрд┐ рдХрдиреЗрдХреНрдЯреЗрдб рд╣реЛрд╕реНрдЯ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдПрдХ рдирдП DNS рд▓реБрдХрдЕрдк рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ DNS TTL рдХрд┐рд╕реА рднреА рдирдП рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрдиреЗрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдХреЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдПрдХ рдФрд░ DNS рд▓реБрдХрдЕрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЕрдзрд┐рдХрддрдо рдЬреАрд╡рдирдХрд╛рд▓ рдХреЛ рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, connection: close рд╣реЗрдбрд░ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ HttpClient рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ServicePoint рдирд┐рдкрдЯрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк Dns.GetHostAddresses рд╕рд╛рде DNS рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдмрдЬрд╛рдп IP рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдмрдВрдж рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

@рдордгрд┐рдЧрдВрдзрдо

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдВрдЪрд╛рд░ рд╣реИ: рдбреАрдПрдирдПрд╕ рдЯреАрдЯреАрдПрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ HTTP/рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЬреАрд╡рдирдХрд╛рд▓ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рд╣рд╛рдБ рдбреАрдПрдирдПрд╕ рдЯреАрдЯреАрдПрд▓ рдХрд╛рдлреА рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВред

рдирдП HTTP рдХрдиреЗрдХреНрд╢рди DNS рд▓реБрдХрдЕрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджрд┐рдП рдЧрдП рд╣реЛрд╕реНрдЯ рдкрддреЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред

рд╣рд╛рдВ рдпрд╣ рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬрд╝ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдбреАрдПрдирдПрд╕ рдХреИрд╢ рд╣реИ рдЬреЛ рдЯреАрдЯреАрдПрд▓ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЯреАрдЯреАрдПрд▓ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдбреАрдПрдирдПрд╕ рд╕рд░реНрд╡рд░ рдиреЗ рдбреАрдПрдирдПрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдбреАрдПрдирдПрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдкреБрд░рд╛рдиреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ DNS рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдирд╛ рд╣реА рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред

рдПрдХ рд╣реА рдХрдиреЗрдХреНрд╢рди рдкрд░ рдХрдИ HTTP рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ HTTP рдХрдиреЗрдХреНрд╢рди (рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди) рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ DNS рд▓реБрдХрдЕрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдлрд┐рд░ рд╕реЗ рд╕рд╣реАред рдПрдХ рдЙрддреНрдкрд╛рджрди/рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рд╕реНрд╡реИрдк рдореЗрдВ рдЬрд╣рд╛рдВ рд╕реНрд╡реИрдк рдЖрдЙрдЯ рд╕рд░реНрд╡рд░ рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ, рдЬреЛ рдЦрд░рд╛рдм рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдмрд╛рддрдЪреАрдд рдЙрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд╣реА рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд░реНрд╡рд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреНрд░реИрдлрд┐рдХ рдореИрдиреЗрдЬрд░ рдПрдХ рдирдП рд╕рд░реНрд╡рд░ рдкрд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдлрд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЕрдЬреНрдЮрд╛рдд рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╡рд┐рдлрд▓рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрдо рдЯреАрдЯреАрдПрд▓ рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд░реНрд╡рд░ рд╡рд┐рдлрд▓рддрд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддреА рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ 5XX рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рджреЗрддрд╛ рд╣реИ рддреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕реА рдХрдиреЗрдХреНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛

рдЗрд╕ DNS рд░реАрдлреНрд░реЗрд╢ рдХрд╛ HttpClient рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ HttpClientHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рд╕реНрд╡рдпрдВ HttpWebRequest рд╕реЙрдХреЗрдЯ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)

рд╣рд╛рдВ рдФрд░ рдирд╛ред рдиреЗрдЯ рдХреЛрд░ рдкрд░, HttpClientHandler рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм HttpWebRequest рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП ServicePointManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдгред

рдореИрдВрдиреЗ рдЖрдИрдЖрдИрдПрд╕ рдкрд░ рдирдЬрджреАрдХреА рдирдЬрд░ рдбрд╛рд▓реА рдФрд░ рд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП 5XX рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдмрдВрдж рдХрд░реЗрдВ ред рдЙрд╕ рдЬрд╛рджреВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ HttpModule рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

рдПрдХ рдПрдлрд╡рд╛рдИрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рдкреЛрд╕реНрдЯ рдФрд░ рдПрдХ рдЕрдВрддрд░рд┐рдо рд╕рдорд╛рдзрд╛рди рд╣реИред рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ

рдпрд╛ рддреЛ ServicePointManager рдХреЛ .NET рдХреЛрд░ рдореЗрдВ рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЬрдмрдХрд┐ рд╣рдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорддрд╛ рдХреЗ рд▓рд┐рдП ServicePointManager рдФрд░ HttpWebRequest рд▓рд╛рдП рд╣реИрдВ, рдпрд╣ .Net Core рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдЯреИрдХ WinHTTP рдпрд╛ рдХрд░реНрд▓ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрдирдд рдирд┐рдпрдВрддреНрд░рдг рдиреЙрдмреНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

HttpClient рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ServicePointManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ HttpWebRequest рдФрд░ .Net Framework рдкрд░ рдкреНрд░рдмрдВрдзрд┐рдд HTTP рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдПрдХ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред рдЪреВрдВрдХрд┐ WinHttpHandler/CurlHandler рдХрд╛ рдЙрдкрдпреЛрдЧ .Net Core рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, SPM рдХрд╛ HttpClient рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдХреЛрдИ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╛ рд╕рдорд╛рди рд╕рдордХрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпреЗ рд░рд╣рд╛ WinHTTP рдЯреАрдо рдХрд╛ рдЬрд╡рд╛рдм:

  1. рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЬрдмрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ _рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ_, WinHTTP рдЧрдВрддрд╡реНрдп IP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рдЗрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп рд░рд╣рдиреЗ рдХреЗ рд╕рдордп рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
  2. рдпрджрд┐ рджреВрд░рд╕реНрде рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд░ рджрд┐рдП рдЧрдП рдереЗ, рддреЛ _new_ рдХрдиреЗрдХреНрд╢рди DNS рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдХреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирдП IP рдХреА рдУрд░ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред

рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдЧрд▓реЗ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдереНрд░реЗрдб рдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред
рдПрдЯреАрдПрдо рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдореИрдВ рдЬреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рд╡рд╣ рд╡рд╣реА рд╣реИ: GET рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ 4 рдмрд╛рд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ (рдЧреИрд░ -200 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ) рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдиреНрдп рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЬреЛ рд╕реНрд╡рдпрдВ DNS рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реЛрдо рд░рд╛рдЙрдЯрд░/рдПрдкреА) рдореИрдВ рдХрдо-рд╡рд┐рд▓рдВрдмрддрд╛, рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рддрдХрдиреАрдХ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ DNS рд╡рд┐рдлрд▓-рдУрд╡рд░ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрджрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдПрд▓рдмреА (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░) рд╣реЛрдЧреА рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдареАрдХ рд╕реЗ рдирд╛рд▓реА-рд░реЛрдХрдирд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдЦрдбрд╝рд╛ рд╣реИ, рдПрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реНрдерд┐рд░ HttpClient рдХреЗ рд╕рд╛рде DNS (рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ) рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрднреА рднреА рдПрдХ рдирдпрд╛ рд╣реЛрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛрд╕реНрдЯ рдЕрд╕реНрд╡рд╕реНрде рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдЕрд╕реНрд╡рд╕реНрдерддрд╛ рд╕реЗ рдЖрдкрдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдПрдХ HTTP рддреНрд░реБрдЯрд┐ рдХреЛрдб рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрдм рдЖрдк DNS TTL рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ TCP рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред

рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВ:

  1. рдлрд╝реЗрд▓рдУрд╡рд░ рдХреЗ рджреМрд░рд╛рди, рдХреНрд▓рд╛рдЗрдВрдЯ-рдорд╢реАрди рдХрд╛ DNS рдХреИрд╢ рдФрд░ TTL рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдорд╢реАрди рдХреНрдпрд╛ рд╕реЛрдЪрддреА рд╣реИ рдХрд┐ рдЯреАрдЯреАрдПрд▓ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрдирдПрд╕ рдХреЗ рдЯреАрдЯреАрдПрд▓ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк ipconfig /showdns рдФрд░ nslookup -type=soa <domain_name> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдХреНрдпрд╛ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рд╣реИрдВ? рдЖрдк рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП netstat /a /n /b рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  3. рд░реЗрдкреНрд░реЛ рдмрдирд╛рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реЗрдЧреА: рдХреГрдкрдпрд╛ рдХреЛрдИ рднреА рдЙрдкрд▓рдмреНрдз рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ рдЬреИрд╕реЗ: рдиреЗрдЯ рдХреЛрд░/рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдХреНрд▓рд╛рдЗрдВрдЯ/рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб, рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реЗрд╕, рд░рд┐рдореЛрдЯ рдбреАрдПрдирдПрд╕ рдПрд▓рдмреА/рдЯреНрд░реИрдлрд┐рдХ рдореИрдиреЗрдЬрд░ рд╢рд╛рдорд┐рд▓ рдЗрддреНрдпрд╛рджрд┐ред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдорд╢реАрди рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЯреАрд╕реАрдкреА/рдПрдЪрдЯреАрдЯреАрдкреА рдХрдиреЗрдХреНрд╢рди рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдХреНрдпреЛрдВ рдорд╛рди рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рд░реНрд╡рд░ рдЕрдм рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Azure рдкрдХреНрд╖ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдорд╢реАрдиреЗрдВ рдЕрд╕реНрд╡рд╕реНрде рд╣реЛрддреА рд╣реИрдВ рдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рд╣реЛрддреА рд╣реИ, рддреЛ рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╛ рдмрд╕ ... рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ServicePoint . рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░реЗрдВ

@рдордгрд┐рдЧрдВрдзрдо рдХреИрд╕реЗ? рдпрд╣ рдбрд┐рд╕реНрдкреЛрдЬреЗрдмрд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рдзрд┐ рдЬреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ CloseConnectionGroup рдЬрд┐рд╕рдХрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реИ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХреБрдЫ рд╣реИрд╢)ред рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рд╕рд░реНрд╡рд┐рд╕рдкреЙрдЗрдВрдЯ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ HttpClient рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╡рд░реНрддреА)ред

@ohadschn

.NET рдХреЛрд░ 2.0 ServicePoint рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИ: https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepoint?view=netcore-2.0

рдЖрдк рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рдХреЗ рд░реАрд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рдХрддрдо рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬрд╝ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

HttpClient рдЕрдиреБрд░реЛрдз рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реЛрдиреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЖрдХрд░реНрд╖рдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░рддреЗ рд╕рдордп рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдпрд╛ рддреЛ рдЕрдиреБрд░реЛрдз рдЗрд╕реЗ рдХрднреА рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдпрд╛ рдпрд╣ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ - рджреЛрдиреЛрдВ рдХреЛ http рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдордп рд╕реАрдорд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдЧрд▓реЗ рдПрдХ рд╕реЗ рдкрд╣рд▓реЗ рд░реАрд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

.NET рдХреЛрд░ 2.0 рд╕рд░реНрд╡рд┐рд╕рдкреЙрдЗрдВрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рддрд╛ рд╣реИ: https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepoint?view=netcore-2.0
рдЖрдк рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рдХреЗ рд░реАрд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рдХрддрдо рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬрд╝ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рджрд░рдЕрд╕рд▓, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд▓рд╛рддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рд╕рддрд╣ рд╡рд╛рдкрд╕ рдЖ рдЧрдИред рд▓реЗрдХрд┐рди рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдиреЛ-рдСрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ HTTP рд╕реНрдЯреИрдХ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рд╕реАрд╕реА: @stephentoub @geoffkizer

рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдХрдИ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ "рд╕рдкрдирд╛ рдЯреАрдо" рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрди рдкрд░ рдХреЛрдИ рд╕рд╣рдорддрд┐ рдмрди рдЧрдИ рд╣реИред рдЗрд╕ рд╕рдореВрд╣ рд╕реЗ рдХреБрдЫ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдирд┐рд░реНрдгрд╛рдпрдХ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп HTTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА ServicePointManager рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ HttpClient рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реНрдорд╛рд░реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдХреЗрд▓реЗ рд░рд╣рдиреЗ рджреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдбреАрдПрдирдПрд╕ рдкрд░рд┐рд╡рд░реНрддрди/рд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдмрдВрдж рдХрд░реЗрдВ ред

  1. рдореИрдВ HttpClient рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реВрдВ? рдПрдХ рдкреНрд░рддрд┐ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ? рдПрдХ рдкреНрд░рддрд┐ рд╣реЛрд╕реНрдЯ/рд╕реНрдХреАрдорд╛/рдкреЛрд░реНрдЯ? рд╕рдЪрдореБрдЪ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рдХреБрд▓? (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐, рдЪреВрдВрдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░ рдЖрджрд┐ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)

  2. рдореИрдВ рдЗрд╕ DNS рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреВрдВ? 1 рдорд┐рдирдЯ рдХреЗ рдмрд╛рдж рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░реЗрдВ? рдЗрд╕реЗ "рдЕрддреНрдпрдзрд┐рдХ рдЕрд╕рдВрднрд╡" рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд┐рдкрдЯрд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рди рдХрд░реЗрдВ?

(рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕реНрдерд┐рддрд┐ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдирд╣реАрдВ; рдореИрдВ рдЕрднреА рдЗрди рд╕рдЯреАрдХ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред)

рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдбреНрд░реАрдо рдЯреАрдо рдЯреНрд░рд╛рдЙрдЯрдЖрдЙрдЯ рдореЗрдВ рднреА рдЖрдордВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдкрдХреА рд╕рд┐рдВрдЧрд▓рдЯрди HttpClient рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЗрдбрд░ рдФрд░ рдкрддреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ SendAsync рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯ рд╕рдХреЗрдВ рдЬреЛ HttpClient рд╕рдорд╛рди рд╕рд╛рдЭрд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реАрд░реНрд╖рд▓реЗрдЦ, рдЖрдзрд╛рд░ рдкрддрд╛) рдПрдХ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдЖрдк рдХрдИ HttpClient рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рд╕рдорд╛рди HttpClientHandler рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ: https://github.com/dotnet/corefx/issues/5811ред

рдЬрд╣рд╛рдБ рддрдХ DNS рдореБрджреНрджреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдпрд╣рд╛рдБ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рд╕реЗ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:

рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдЕрдЧрд▓реЗ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ

рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдбреИрд░реЗрд▓ рдорд┐рд▓рд░ рдиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рдП: https://github.com/dotnet/corefx/issues/11224#issuecomment -270498159ред

@ohadschn рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рд╡рд┐рд╖рдп рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрдИ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА HttpClient (рдпрд╛ HttpClientHandler) рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ _benefit_ рд╣реИ? рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдП рд╣реЛрд╕реНрдЯ рдХрд╛ рдЕрд░реНрде рд╣реИ рдирдпрд╛ DNS рд▓реБрдХрдЕрдк, рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди, рдирдпрд╛ рд╕реЙрдХреЗрдЯред рдХреНрдпрд╛ TIME_WAIT рдореЗрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВрдиреЗ рдирд╣реАрдВ рдорд╛рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреА рд╕реАрдорд╛ рддрдХ рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдХрдИ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рднреА HttpClient рд╕рд┐рдВрдЧрд▓рдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рд╣реИ?

DNS рд╕рд▓рд╛рд╣ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрд╛ рдХрд┐ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рдХреА рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХрдореА рд╣реИ, рдФрд░ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рдЫреЛрд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ рдЬрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдирд┐рдкрдЯрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЯреНрд░реЗрдб-рдСрдл рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣рдж рддрдХ рдореЗрд░реЗ рдКрдкрд░ рд╣реИред :)

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рди HttpClient [ Handler ] рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рд╕рд╛рджрдЧреА рд╣реИред рдЖрдкрдХреЛ рд╣реЛрд╕реНрдЯ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдореИрдкрд┐рдВрдЧ рдЬреИрд╕реА рдЪреАрдЬрд╝реЗрдВ рдирд╣реАрдВ рд░рдЦрдиреА рд╣реЛрдВрдЧреАред рдореИрдВ TIME_WAIT рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рднреА рдирд╣реАрдВред

рдЬрдм рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ DNS рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЖрдкрдиреЗ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рдЖрдк рдПрдХ рддрдВрддреНрд░ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдбреАрдПрдирдПрд╕ рд╕реЗ рдкреВрдЫрддрд╛рдЫ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рд╣реА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рддрд╛ рд╣реИ ...

рдЬрдмрдХрд┐ рджрд┐рдП рдЧрдП рдЙрддреНрддрд░ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкрд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдЖрджрд░реНрд╢ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдкреВрд░реНрдг рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реНрдЯреИрдХ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡реЗ рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреЙрди рдФрд░ рдЬреЗрди рдбреЛрд╡реЗрд▓рдкрд░ рдХреЗ рджреИрдирд┐рдХ рдЬреАрд╡рди рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдпрд╛рдпрдд рд╣реИред
рдХрд┐рд╕реА рдиреЗ .NET рдХреЛрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рд╡рд░реНрдЧ NodaTime рдФрд░ System.Collections.Immutable рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд╛рдо рдХрд░реЗрдЧрд╛?

    public class ConnectionLeaseTimeoutHandler : DelegatingHandler
    {
        private static string GetConnectionKey(Uri requestUri) => $"{requestUri.Scheme}://{requestUri.Host}:{requestUri.Port}";

        private readonly IClock clock;
        private readonly Duration leaseTimeout;
        private ImmutableDictionary<string, Instant> connectionLeases = ImmutableDictionary<string, Instant>.Empty;

        public ConnectionLeaseTimeoutHandler(HttpMessageHandler innerHandler, IClock clock, Duration leaseTimeout)
            : base(innerHandler)
        {
            this.clock = clock;
            this.leaseTimeout = leaseTimeout;
        }

        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            string key = GetConnectionKey(request.RequestUri);
            Instant now = clock.GetCurrentInstant();

            Instant leaseStart = ImmutableInterlocked.GetOrAdd(ref connectionLeases, key, now);

            if (now - leaseStart > leaseTimeout)
            {
                request.Headers.ConnectionClose = true;
                ImmutableInterlocked.TryRemove(ref connectionLeases, key, out leaseStart);
            }

            return base.SendAsync(request, cancellationToken);
        }
    }

@snboisen рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрд╕ рдкрд░ рдордд рдкрдХрдбрд╝реЛред :)

рдореЗрд░реЗ рд▓рд┐рдП рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ Connection: close рд╣реЗрдбрд░ рднреЗрдЬрдирд╛ рднреА рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рдпрд╣рд╛рдБ рджреЛрд╣рд░рд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ @darrelmiller рдиреЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛:

рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬ рдЯрд╛рдЗрдордЖрдЙрдЯ рдПрдХ рдЕрдЬреАрдм рдЬрд╛рдирд╡рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рддрдм рддрдХ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдУрд░реЗрди рдиреЗ рдЖрдЬ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдпрд╣ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реА рдСрдирдиреЗрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ рдмрдВрдж рдХрд░реЗрдВ , рдЬрд┐рд╕рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдХрдиреЗрдХреНрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗ рдЕрдирдВрдд рдкрд░ рдХреНрдпреЛрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдЕрдЬреАрдм рддрд░реАрдХрд╛ рд╣реИред

рдореИрдВ рдбреИрд░реЗрд▓ рдХреА рд░рд╛рдп рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдЗрд╕ рдкреВрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╣реИрдХрд┐рд╢ рд▓рдЧрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ? рдЕрдЧрд░ рдпрд╣ _рдХрднреА-рдХрднреА_ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдирд┐рдкрдЯрд╛рдиреЗ рдпрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдбреАрдПрд╕рдПрди рд▓реБрдХрдЕрдк рдХрд░рдиреЗ рд╕реЗ "рд╕рд╕реНрддрд╛" рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ Azure рдЯрд┐рдХрдЯ рдЦреБрд▓рд╛ рд╣реИ?
рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ Azure рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдПрдХ Azure рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджреВрд░ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЗрд╕рдХреЗ рд╣реБрдкреНрд╕ рд╕реЗ рдХреВрджрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдЗрдЪреНрдЫреБрдХ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВред

@tmds рдореИрдВрдиреЗ рдПрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреНрдп рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ Azure рдЯреНрд░реИрдлрд╝рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: AWS рдХреА рдПрдХ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕реНрдЯреЗрдЬрд┐рдВрдЧ/рдкреНрд░реЛрдбрдХреНрд╢рди рд╕реНрд▓реЙрдЯ рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде Azure рдРрдк рд╕реЗрд╡рд╛ рд╣реИред рдФрд░ рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рднреА рдЗрд╕ рд╕реНрд╡реИрдкрд┐рдВрдЧ рддрдВрддреНрд░ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

@snboisen рдХреНрдпрд╛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ AWS рдФрд░ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ (рдЬреЛ?) рднреА рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DNS рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@tmds AWS рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБ, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП: https://aws.amazon.com/route53/faqs/#adjust_ttl_to_use_failover
рдореИрдВ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рднреА рдХрд░рддреЗ рд╣реИрдВред

@tmds AWS рдХреЗ рд▓рд┐рдП, рд╣рд╛рдБ, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рд▓рд┐рдП: https://aws.amazon.com/route53/faqs/#adjust_ttl_to_use_failover
рдореИрдВ рдЕрдиреНрдп рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдРрд╕рд╛ рднреА рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рджреЛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ:

  • рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЕрдм рдирд╣реАрдВ рд╣реИ
  • рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдЬреЛ рдЕрдм рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ

DNS рдлреЗрд▓рдУрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред DNS (AWS, Azure, ... рдореЗрдВ) рд╕реЗ рдЕрдЧрдореНрдп рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдореИрдХреЗрдирд┐рдЬреНрдо рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдРрд╕реА рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рд╣реИ (рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЕрдзрд┐рдХрддрдо рдЙрддреНрддрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ)ред
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрддрд░ рдкрд░, рдирдП рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдФрд░ http2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬреАрд╡рдВрддрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдЧ/рдкреЛрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЬрдм рдореИрдВ Azure рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рджреВрд╕рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред
рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЕрдм рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ AWS рдмреНрд▓реВ/рдЧреНрд░реАрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбреЙрдХреНрдЯрд░ рдорд┐рд▓рд╛: https://d0.awsstatic.com/whitepapers/AWS_Blue_Green_Deployments.pdfред
рдпрд╣ рдХрдИ рддрдХрдиреАрдХреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред DNS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ _DNS TTL рдЬрдЯрд┐рд▓рддрд╛рдУрдВ_ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ _рдХреЛрдИ DNS рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рдирд╣реАрдВ_ред

@tmds рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдбреАрдПрдирдПрд╕ рдЯреАрдЯреАрдПрд▓ рдмрдирд╛рдо рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрдо рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

HttpClient рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА Azure рдРрдк рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ 2 рдЕрд▓рдЧ-рдЕрд▓рдЧ API рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЕрдкрдиреЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд▓рдЧрднрдЧ 250 рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛, рд╣рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд┐рд▓рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рдФрд░ "рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛" HttpRequestException - рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╡рд░реНрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдереЗ, рдпрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЕрдиреБрд░реЛрдз рдереЗред

рдЬрдм рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ HttpClient рдХрд╛ рдирд┐рдкрдЯрд╛рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП using рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реЗ using рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирдЧрдгреНрдп рдерд╛ред

рдЬрдм рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ HttpClient рдХрд╛ рдирд┐рдкрдЯрд╛рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП using рдмреНрд▓реЙрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реЗ using рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдирдЧрдгреНрдп рдерд╛ред

рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рд▓реАрдХ рдирд╣реАрдВ рдХрд░рдиреЗ рдФрд░ SocketException s рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдПрдордПрд╕рдбреАрдПрди рд╕реЗ :

рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рддрддреНрдХрд╛рд▓ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ HttpClient рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рд╕реЗ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╕реЙрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк SocketException рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред

рд╕рд╛рде рд╣реА, рджреЗрдЦреЗрдВ https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

@khellang рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж (рдФрд░ SocketException s рдкрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рдПрдХ рдЧрд▓рддрдлрд╣рдореА рдереА) - рдореИрдВ рдЙрд╕ рдкреЛрд╕реНрдЯ рдФрд░ 3 рдпрд╛ 4 рдЕрдиреНрдп рдкреЛрд╕реНрдЯреЛрдВ рдореЗрдВ рдЗрд╕реА рд╕рдЯреАрдХ рдЪреАрдЬрд╝ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдПрдХрд▓-рддрддреНрдХрд╛рд▓ рдЗрд░рд╛рджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдЗрд╕реЗ Azure рдРрдк рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд╛рдлреА рдорд╛рдореВрд▓реА рд▓реЛрдб (рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд, 250 рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЕрдиреБрд░реЛрдз) рдХреЗ рддрд╣рдд рд▓рдЧрд╛рддрд╛рд░ HttpRequestExceptions рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рди рд╣реЛ, HttpClient рдХреЛ рдирд┐рдкрдЯрд╛рдирд╛ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЗрди рд╕реБрд╕рдВрдЧрдд рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред

рдореИрдВ рдпрд╣ рд╕реЛрдЪрддреЗ рд╣реИрдВ рд░рд╣рд╛ рд╣реВрдБ рдПрдХ "рдЕрдзрд┐рдХ рд╕рд╣реА" рд╕рдорд╛рдзрд╛рди рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рднреА рд▓рдВрдмрд┐рдд рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрд╛рдиреЗ рд░рджреНрдж HttpClient , рдлрд┐рд░ рд╕реЗ рдЗрдиреНрд╕реНрддрд╛рдВрдд HttpClient , рдФрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рднреА рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ

рдПрдХ рдмрд╛рд░ рддрддреНрдХрд╛рд▓ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ

рд╣рдо рдПрдХ рдХреНрд▓реАрдирд░ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реАрдорд╛ рд╣реИред рдореИрдВ рдЧрд▓рдд рд╣реЛрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЦреБрд╢ рд╣реВрдВ, рдореБрдЭреЗ рдмрд╕ рдХреБрдЫ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрди рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

@snboisen рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХрдиреЗрдХреНрд╢рди

рдореБрдЭреЗ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдиреЗрдХреНрд╢рди рдХреЛ "рдХрд░реАрдмреА" рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЬреЛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП GetOrCreate() рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╕рднреА рдирдП рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ 120 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдирдпрд╛ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдирд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреБрд░рд╛рдиреЗ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рдирд┐рдкрдЯрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .NET рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз рдПрдХ рдирдпрд╛ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрднреА рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд░реАрдлреНрд░реЗрд╢ рд╣реЛрдирд╛ рд╣реИред рд╕рд░реНрд╡рд░ DNS рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рди рд╣реА рдХрд┐рд╕реА рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбреАрдПрдирдПрд╕ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдРрд╕реА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдСрдлрд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдордиреНрд╡рдп рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдИрдкреА рдХреЛ рдмрджрд▓ рд╕рдХреЗрдВ рдФрд░ рди рдХреЗрд╡рд▓ рдПрдХ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреВрд▓ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХреЗрдВред рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдПрдХ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реЛрдЪрджрд╛рд░ рдЖрдИрдкреА рдкрддрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ DNS рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЛ рдИрд╕реА 2 рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЖрдкрдХреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╕реЗ "рдХрд░реАрдмреА" рд╢реАрд░реНрд╖рд▓реЗрдЦ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдХреЛ рдПрдХ рдИрд╕реА 2 рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рдКрдкрд░ рдмреИрдареЗ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╡реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП "рдХреНрд▓реЛрдЬрд╝" рд╣реЗрдбрд░ рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдирдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╣реИ рдЬрд╣рд╛рдБ рдареАрдХ рдЙрд╕реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рдирдП рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ DNS рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рд┐рдЪ рдХрд┐рдП рдЧрдП рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИред DNS рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рдмрдбрд╝реЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреНрдпрд╛ рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬрдЯрд╛рдЗрдордЖрдЙрдЯ рдЕрдм рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛? рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреА рддрд░рд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореЗрд░реЗ рдХрдиреЗрдХреНрд╢рди DNS рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ _seems_ ConnectionLeaseTimeout _is_ рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

ServicePointMananager.ConnectionLeaseTimeout .NET рдХреЛрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред .NET рдХреЛрд░ рдореЗрдВ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдиреЛ-рдСрдк рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ .NET Framework рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЧреБрдг .NET Framework рдореЗрдВ "рдмрдВрдж" рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдПрдХрд▓-рддрддреНрдХрд╛рд▓ рдЗрд░рд╛рджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдЗрд╕реЗ Azure рдРрдк рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рд▓реЛрдб (рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд, 250 рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЕрдиреБрд░реЛрдз) рдХреЗ рддрд╣рдд HttpRequestExceptions рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдорд╛рд░ рд░рд╣реЗ рд╣реИрдВред рдЬрдм рддрдХ рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рди рд╣реЛ, HttpClient рдХреЛ рдирд┐рдкрдЯрд╛рдирд╛ рд╡рд╣ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЗрди рд╕реБрд╕рдВрдЧрдд рдЕрдкрд╡рд╛рджреЛрдВ рдореЗрдВ рдЪрд▓рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред

рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдореЗрдВ HttpClient рд▓рдкреЗрдЯрдХрд░ рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ http рдЕрдиреБрд░реЛрдз рдХреЛ рдЙрд╕реА HttpClient рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдпрд╣ рдЗрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдХрд░рддрд╛ рд╣реИ , рдЬреИрд╕реЗ RestSharp рд▓реЗрдХрд┐рди рдпрд╣ рднреА рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ)ред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ lock{} рдкреАрдЫреЗ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ 60 рдорд┐рдирдЯ рдореЗрдВ рд╣рдо рдПрдХ рдирдпрд╛ HttpClient рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЙрдЪреНрдЪ рдорд╛рддреНрд░рд╛ рдореЗрдВ http рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднрд╛рд░реА рдПрдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░рдг) рдЬрдмрдХрд┐ рдЕрднреА рднреА рдкреБрд░рд╛рдиреЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдмрдВрдж рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рдмрд╛рдж)ред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рди рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВ (рд╡рд┐рд╢реЗрд╖рдХрд░ рд╕рднреА рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг) рд▓реЗрдХрд┐рди рдпрд╣ рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рдХреЗ рдХрд╛рд░рдг рдорд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред

@KallDrexx рдЖрдкрдХреЛ 'рд╡реИрд╢реНрд╡рд┐рдХ' рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? Naively рдореИрдВ рдЗрд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд░ 60 рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдирдП рд╕реЗ рдмрджрд▓ рджреВрдВрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдлреА рдирд╣реАрдВ рд╣реЛрдЧрд╛?

HttpClient рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╣реИ:

```рд╕реА#
var timeSinceCreated = DateTime.UtcNow - _lastCreatedAt;
рдЕрдЧрд░ (timeSinceCreated.TotalSeconds > SecondsToRecreateClient)
{
рддрд╛рд▓рд╛ (рдкреИрдбрд▓реЙрдХ)
{
timeSinceCreated = DateTime.UtcNow - _lastCreatedAt;
рдЕрдЧрд░ (timeSinceCreated.TotalSeconds > SecondsToRecreateClient)
{
_currentClient = рдирдпрд╛ HttpClient ();
_lastCreatedAt = рджрд┐рдирд╛рдВрдХ рд╕рдордп.UtcNow;
}
}
}

        return _currentClient;

```

рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддрд╛рд▓рд╛ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдзрд╛рдЧреЗ рдПрдХ рд╕рд╛рде рдПрдХ рдирдпрд╛ HttpApiClient рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╣рдо рдЕрдзрд┐рдХ рдЖрдХреНрд░рд╛рдордХ рддрд░реАрдХреЗ рд╕реЗ рд▓реЙрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░рдг рд╣реИред
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдк рдпрд╛ рддреЛ рдЯрд╛рдЗрдорд░-рдЖрдзрд╛рд░рд┐рдд (async) рдЕрдкрдбреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ (рдереНрд░реЗрдб-рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рд╢реИрд▓реА) рдореЗрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдЕрдиреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЛ рдмреНрд▓реЙрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реЗ рдкреБрд░рд╛рдиреЗ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░рдг рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░реВрдВрдЧрд╛ рдпрд╛ рдирд╣реАрдВред

рдпрджрд┐ рдмрд╣реБрдд рд╕реЗ рдереНрд░реЗрдб рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдирдпрд╛ HttpClient рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрднреА рднреА рд╣рд░ рдорд┐рдирдЯ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрдирд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдкреБрд░рд╛рдиреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЙрд╕ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХреЛ рдареАрдХ рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдПрдХ рдЭрд░рдирд╛ рдХреЗ рдХрд╛рд░рдг)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдЕрднреА рднреА рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдЙрдкрд╛рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ DateTime рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдПрдХ рдкрд░рдорд╛рдгреБ рдСрдкрд░реЗрд╢рди рд╣реИ (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ) рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдзрд╛рдЧреЗ _lastCreatedAt рдорд╛рди рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЕрдкрдбреЗрдЯ рдСрдкрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рдореЗрдВред

рдФрд░ рд╕рднреА рдереНрд░реЗрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдПрдХ рдереНрд░реЗрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдПрдХ рдереНрд░реЗрдб рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рддрд╛рд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рдХрд┐ рдПрдХ рдзрд╛рдЧрд╛ _currentClient рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдЗрд╕реЗ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдЬреНрдЮрд╛рдд рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛рдПрдВ рд╣реИрдВред

@KallDrexx

  • рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ReaderWriterLockSlim рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
  • рдпрджрд┐ рдЖрдк рд╕рд╣реА x64 рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ DateTime рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкрд░рдорд╛рдгреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ ulong рдлрд╝реАрд▓реНрдб рд╣реИ)ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдкрдХрд╛ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд▓реЙрдХ рдХреЗ рдмрд╛рд╣рд░ DateTime рдорд╛рди рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
  • @karelz рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдЯрд╛рдЗрдорд░-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ DateTime рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА ... рдЯрд╛рдЗрдорд░ рдмрд╕ HttpClient рд╕реНрд╡рд┐рдЪ рдХрд░ рджреЗрдЧрд╛ред рдЖрдкрдХреЛ рдЕрднреА рднреА рдХреБрдЫ рдореЗрдореЛрд░реА рдмреИрд░рд┐рдпрд░ рдХреЗ рд╕рд╛рде HttpClient рдлрд╝реАрд▓реНрдб рдХреЛ рдШреЗрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ( volatile , Interlocked.Exchange рдЖрджрд┐)ред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ReaderWriterLockSlim рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдиреАрдЯ рдореИрдВ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП рдореБрдЭреЗ SemaphoreSlim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд╕рд┐рдВрдХ/рдкреНрд░рддреАрдХреНрд╖рд╛ рдЕрдиреБрдХреВрд▓ рд╣реИ (рдЬрд╣рд╛рдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ReaderWriterLockSlim рдирд╣реАрдВ рд╣реИ), рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдереНрд░реЗрдб рд╡рд┐рд╡рд╛рдж рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдирдпрд╛ HttpClient рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдлрд┐рд░ рдлрд┐рд░ рд╕реЗ ReaderWriterLockSlim рд╕рдВрднрд╛рд╡рд┐рдд DateTime рдЧреИрд░-рдкрд░рдорд╛рдгреБ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╕рд╣реА рдмрддрд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдзрдиреНрдпрд╡рд╛рдж!

@karelz рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдЯрд╛рдЗрдорд░-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ

рдЖрд╣ рдореИрдВрдиреЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рд╛ рдерд╛ рдХрд┐ рдЙрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд╕реНрдореГрддрд┐ рдмрд╛рдзрд╛ рддрдВрддреНрд░ рд╕реЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдмрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП HttpClient рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд/рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА .net рдХреЛрд░ 2.0 рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрднреА рднреА DNS рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА .net рдХреЛрд░ 2.0 рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрднреА рднреА DNS рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреАрдПрдирдПрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ HttpClient рдореМрдЬреВрджрд╛ рдХрдиреЗрдХреНрд╢рди (рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬрдм рдбреАрдПрдирдПрд╕ рдмрджрд▓рддрд╛ рд╣реИ рддрдм рднреА рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕реЗ рдЬреБрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рд╕рд░реНрд╡рд░ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред

@KallDrexx , рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рдиреАрд▓реЗ-рд╣рд░реЗ рд░рдВрдЧ рдХреА рддреИрдирд╛рддреА рдХреЗ рдореБрджреНрджреЗ рд╣реЛрдВрдЧреЗ?

@withinoneyear рдореЗрд░реА рд╕рдордЭ рд╕реЗ рд╣рд╛рдБред рдпрджрд┐ рдЖрдк HttpClient рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдбрдХреНрд╢рди рдЧреНрд░реАрди рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреНрд▓реВ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВ HttpClient рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рддрдХ рдЧреНрд░реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдХрдиреЗрдХреНрд╢рди рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдорд╛рдкрди рдХреЗ рд▓рд┐рдП DateTime.UtcNow рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред Stopwatch.GetTimestamp рдЬреИрд╕реЗ рдореЛрдирд┐рдЯреЛрдирд┐рдХ рд╕рдордп рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдЖрдк рдСрдкрд░реЗрдЯрд░ рдпрд╛ рд╕рдордп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд░рдХреНрд╖рд┐рдд рд╣реИрдВред рдХреБрдЫ рдмрдЧреНрдЧреА рдЪрд┐рдкрд╕реЗрдЯ рдереЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреНрдпреВрдкреАрд╕реА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рдЕрдм рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реИрдВред

var sp = ServicePointManager.FindServicePoint(рдирдпрд╛ рдЙрд░реА ("http://foo.bar/baz/123?a=ab"));
sp.ConnectionLeaseTimeout = 60*1000; // 1 рдорд┐рдирдЯ

рдпрд╣ рдХреЛрдб рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ?

@whynotme8998 @lundcm рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рдпрджрд┐ рдЖрдк HttpClient рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИрдВ рдФрд░ рдЖрдк рдПрдХрд╛рдзрд┐рдХ рдПрдирдкреЙрдЗрдВрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ рддреЛ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдБрдЪ

рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ConnectionLeaseTimeout рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?

рдЕрдЧрд░ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдореИрдВ рдЗрд╕реЗ 1 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рд░ рдорд┐рдирдЯ рдХрдиреЗрдХреНрд╢рди рд▓реАрдЬ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛? рдореЗрд░реЗ рдмреИрдХ-рдПрдВрдб рдХреЗ рд╕рд╛рде рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧ рдмреИрдХ-рдПрдВрдб рдкрд░ рдбреАрдПрдирдПрд╕ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдПрдХ рдорд╛рдирдХ Azure рд╡реЗрдм рдРрдк рдкрд░, рдореЗрд░реЗ ASP.NET рдмреИрдХ-рдПрдВрдб рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ DNS рд░реАрдлрд╝реНрд░реЗрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛?

рдХреНрдпрд╛ 1 рдорд┐рдирдЯ рдХрд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝реЗрдЧрд╛ рдЬрд╣рд╛рдВ DNS рдЕрдкрдбреЗрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдлрд┐рд░ рднреА рдЯрд╛рдЗрдордЖрдЙрдЯ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЗрд╕реЗ рд╕рдордЭрдирд╛ .NET рдорд╛рдирдХ 2.0 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрд╛рдордХрд╛рдЬ рдХреНрдпрд╛ рд╣реИ?

рдЙрд╕ https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЗрд╕рдХреЗ рдХреБрдЫ рдЕрдВрд╢ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХрдиреЗрдХреНрд╢рди рдмрджрд▓рдиреЗ рд╕реЗ рд▓реАрдЬрд╝рдЯрд╛рдЗрдордЖрдЙрдЯ Xamarin рдкрд░ .netstandard 2.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ !!!

@paradisehuman рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм ServicePoint.ConnectionLeaseTimeout ред AFAIK рдпрд╣ .NET рдХреЛрд░ рдкрд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред .NET Core 2.1 рдореЗрдВ рд╣рдордиреЗ SocketsHttpHandler.PooledConnectionLifetime ред рд╕рд╛рде рд╣реА ASP.NET рдореЗрдВ рдирдпрд╛ HttpClientFactory рджреЛрдиреЛрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред
Mono/Xamarin рдХрд╛ рдЕрдкрдирд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рд╕реНрдЯреИрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ (рд╡реЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП CoreFX рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) - рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд░реЗрдкреЛ рдкрд░ рдмрдЧ рджрд░реНрдЬ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдЬ .NET Core рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╛ рддреЛ ServicePointManager рдХреЛ .NET рдХреЛрд░ рдкрд░ рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╕рдорд╛рди рд╕рдордХрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@onovotny , .NET Core 2.1 рдореЗрдВ

@stephentoub рдЕрднреА рдЗрд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ PooledConnectionLifetime рдХреЛ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдЕрднреА рднреА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рд╕рдореБрджрд╛рдп рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИред

@onovotny @karelz @stephentoub,

рдХреНрдпрд╛ рдЖрдк рд╕рднреА рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдореВрд▓ рд╕рд┐рдВрдЧрд▓рдЯрди рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ/рдбреАрдПрдирдПрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рдЯреАрдХ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ?

  • .NET Framework 2.0+ рдореЗрдВ, ServicePoint.ConnectionLeaseTimeout ред

  • .NET рдХреЛрд░ 2.1 рдореЗрдВ, SocketsHttpHandler.PooledConnectionLifetime ред

  • рдЕрдиреНрдп рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ/рд▓рдХреНрд╖реНрдпреЛрдВ/рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди/рд╣реИрдХ/рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рднреА рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдзрд╛рдЧреЗ рдФрд░ рдЕрдиреНрдп рд╕реЗ рдЪреАрдЬреЗрдВ рд╕реАрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ (рдЬреИрд╕реЗ ConnectionLeaseTimeout .NET рдорд╛рдирдХ 2.0 рдореЗрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ), рдореИрдВ рдПрдХ рддрд░рд╣ рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реВрдВ рдЬреЛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо/рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реВрдБрдШрдирд╛ рдареАрдХ рд╣реИред рд╕рдордп-рд╕рдордп рдкрд░ HttpClient рдХрд╛ рдирд┐рдкрдЯрд╛рди/рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдареАрдХ рд╣реИ, рдпрджрд┐ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд╣реИред рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдЧрд▓рдд рдкрд╛рдпрд╛, рдЬреЛ рдХрд┐ рдирд┐рдпрдорд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╣реЛрд╕реНрдЯ рдХреЛ рдХреЗрд╡рд▓ connection:close рд╣реЗрдбрд░ рднреЗрдЬрдирд╛ рдерд╛ред рдХрд┐рд╕реА рднреА рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж!

@tmenier рдЕрдиреНрдп рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ/рд▓рдХреНрд╖реНрдпреЛрдВ/рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдорд╛рдзрд╛рди/рд╣реИрдХ/рдХрд╛рд░реНрдп-рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рднреА рдкрд░реЗрд╢рд╛рди рди рд╣реЛрдВред

рдЖрдк рд╣рдореЗрд╢рд╛ рдирд┐рдпрдорд┐рдд рдЖрдзрд╛рд░ рдкрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд░реАрд╕рд╛рдпрдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрд╕ рдирдпрд╛ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред
рдпрд╣реА HttpClientFactory рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп HttpClientFactory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред

@karelz рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдореБрдЭреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рд╕реВрдБрдШрдиреЗ рдФрд░ рд╣рд░ рдЬрдЧрд╣ рд░реАрд╕рд╛рдпрдХрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЬрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ (рдУрд╡рд░рд╣реЗрдб рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐)?

рдореБрд╢реНрдХрд┐рд▓ рдмрд┐рдЯ рдпрд╣ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИ рдХрд┐ _рдЬрдм_ рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рдкрдЯрд╛рди рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ (рдореБрдЭреЗ рд╕рдорд╡рд░реНрддреА/рд▓рдВрдмрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ HttpClientFactory рдирд┐рдкрдЯрддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рджред

@tmenier рдЖрдк рдкреНрд░рддреНрдпреЗрдХ HttpClient рдХреЙрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд░реАрд╕рд╛рдпрдХрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдердХрд╛рд╡рдЯ рд╣реЛ рдЬрд╛рдПрдЧреАред рдкреБрдирд░реНрдЪрдХреНрд░рдг рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╕рдордпрдмрд╛рд╣реНрдп рдпрд╛ HttpClient s рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд▓ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЬрд┐рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@KallDrexx рдареАрдХ рд╣реИ, рдореИрдВ рд╕рд┐рд░реНрдл _periodically_ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди (рдпрд╛ "рдЫрджреНрдо" -рд╕рд┐рдВрдЧрд▓рдЯрди) рдХреЛ рд░реАрд╕рд╛рдЗрдХреНрд▓рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рд░ рдХреБрдЫ рдорд┐рдирдЯред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдкреВрд▓ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдФрд░ рдореГрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд▓рдВрдмрд┐рдд рдирд┐рдкрдЯрд╛рди рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдПрдХ рдмрд╛рд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд▓рдВрдмрд┐рдд рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реИред

рдЖрд╣ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЧрд▓рдд рд╕рдордЭрд╛ рдХрд┐ рдЖрдк рд░реАрд╕рд╛рдпрдХрд▓ рд╕реЗ рдХреНрдпрд╛ рдорддрд▓рдм рд░рдЦрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреЗ рдХреЛ рдирд┐рдкрдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЬреАрд╕реА рдЙрдиреНрд╣реЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рджреЗрдВред
рдХреЛрдб рд╕рдордп-рд╕рдордп рдкрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдпрд╛ "рдЫрджреНрдо" -рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реЗрдЯ рдХрд░рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ http рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрдирдХрд╛ рдирд┐рдкрдЯрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдордВрджреА рд╣реЛ рд╕рдХрддреА рд╣реИред

@tmenier .NET Core 2.1 рдореЗрдВ SocketsHttpHandler.PooledConnectionLifetime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, https://github.com/dotnet/wcf/blob/master/src/System.Private.ServiceModel/src/System/ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рдореЗрдВ HttpClientHandler рдХрд╛ рдирд┐рд░реНрдорд╛рдг

@edavedian рдореИрдВ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рд░реЗрдкреЛ рдкрд░ рдкреВрдЫрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ @mconnew @Lxiamail

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдЯреИрдХ рдпрд╛ рддреЛ WinHTTP рдпрд╛ рдХрд░реНрд▓ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрдирдд рдирд┐рдпрдВрддреНрд░рдг рдиреЙрдмреНрд╕ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреНрдпрд╛ рдиреЗрдЯ рдХреЛрд░ рдореЗрдВ рдПрдХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рд╕реЙрдХреЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдиреЗрдЯ рдХреЛрд░ рдореЗрдВ рдПрдХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рд╕реЙрдХреЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рд╣рд╛рдВ, рд╕реЙрдХреЗрдЯ рдПрдЪрдЯреАрдкреА рд╣реИрдВрдбрд▓рд░, рдФрд░ 2.1 рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИред

рдХреНрдпрд╛ HttpClient рдпреВрдЖрд░рдЖрдИ рдХреЛ рдХреИрд╢ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рд╡реИрд╕реЗ рд╣реА рд░реЗрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг (.NET Core 3.0/.NET Framework 3.0 рдЖрджрд┐) рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╢рд┐рдВрдЧ рдХреЗрд╡рд▓ RestClient рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрдХ рдиреЗрдЯ рдХреЛрд░ 2.1+ рдРрдк рд╣реИ?

рдХреНрдпрд╛ рдПрдЪрдЯреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреИрд╢ рдпреВрдЖрд░рдЖрдИ 'рдпрд╣ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рд╡реИрд╕реЗ рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЗрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

HttpClient рдХреЛрдИ рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@SpiritBob рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреИрд╢рд┐рдВрдЧ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдореБрджреНрджрд╛ рдмрдВрдж рд╣реИ; рдпрджрд┐ рдЖрдк рдХреГрдкрдпрд╛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@scalablecory рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдбреЗрд╡рд┐рдбрд╢ рдиреЗ рдореЗрд░реЗ рдорди рдореЗрдВ рдЬреЛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдерд╛, рдЙрд╕рдХрд╛ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рдмрд╕ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдерд╛ рдЬрд┐рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп HttpClientFactory , рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЬрд╛рдПрдЧрд╛ HttpClient s рдЕрдкрдиреЗ рдХрд░реАрдмреА рд╕рдореНрдмрдиреНрдз рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ DNS рд▓реБрдХрдЕрдк рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ HttpRequestException рдПрдХ рдЖрдВрддрд░рд┐рдХ рдХреЗ рд╕рд╛рде SocketException рдХрд┐ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рд╣реЛрд╕реНрдЯ рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ DNS рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рддреНрд░реБрдЯрд┐ рдХреЛрдб 11001 - рдРрд╕рд╛ рдХреЛрдИ рд╣реЛрд╕реНрдЯ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ)?

рдпрджрд┐ рдирд╣реАрдВ, рддреЛ DNS рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдкрд░ TTL рдХреА рд╕рдордп-рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ HttpClient DNS рд▓реБрдХрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо HttpMessageHandler HttpClientFactory рд╕рд╛рде AddHttpClient<T, U>().ConfigurePrimaryHttpMessageHandler(...) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдФрд░ рдЬрдм рдЯреАрдЯреАрдПрд▓ рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ DNS рд░рд┐рдХреЙрд░реНрдб рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рдЗрд╕реЗ Azure рдмреНрд▓реЙрдм рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд░рддреЗ рд╕рдордп рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jzabroski picture jzabroski  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

iCodeWebApps picture iCodeWebApps  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GitAntoinee picture GitAntoinee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jkotas picture jkotas  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jamesqo picture jamesqo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ