[のServicePointにアクセスするためのいかなる方法/プロパティが存在しないので、これは、ハックコードなり]
ない公衆がないのであなたが (以下のように、基礎となるのServicePointにアクセスするためにリフレクションを使用することができこの値にアクセスするには、/ privateフィールド/プロパティ、私は開始要求デリゲートをフックします)
HttpClientHandler SetServicePointOptions(HttpClientHandler handler)
{
var field = handler.GetType().GetField("startRequest", BindingFlags.NonPublic| BindingFlags.Instance);
var startRequest = (Action<object>)field.GetValue(handler);
Action<object> newStartRequest = obj =>
{
var webReqField = obj.GetType().GetField("webRequest", BindingFlags.NonPublic | BindingFlags.Instance);
var webRequest = webReqField.GetValue(obj) as HttpWebRequest;
webRequest.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
startRequest(obj); //call original action
};
field.SetValue(handler, newStartRequest); //replace original 'startRequest' with the one above
return handler;
}
BindIPEndPointCallbackはあなたの質問でlinkedです。必要に応じて変更してください。 この方法を使用できます。
HttpClientHandler handler = SetServicePointOptions(new HttpClientHandler());
HttpClient client = new HttpClient(handler);
var str = await client.GetStringAsync("https://google.com");