Ich war das gleiche Problem erkunden. Es hat etwas gegraben, aber ich habe eine Lösung gefunden. Jetzt merke ich, dass Sie speziell gefragt haben, wie man eine HttpClientHandler
anwendet. Ich weiß nicht, ob das gemacht werden kann; Sie können jedoch einen Proxy anwenden. Hier ist wie.
Die ActiveDirectoryClient
Klasse bietet eine DataServiceContextWrapper
Eigenschaft namens Context
, die, nicht überraschend, ein Wrapper zu einem DataServiceContext
ist.
Das ist gut. Es reduziert das Problem, herauszufinden, wie ein Proxy auf die Klasse DataServiceContext
anzuwenden ist. Ich benutzte einen alten Code, den ich herumgesessen hatte, und die Dinge explodierten ziemlich. Dies liegt daran, dass ich das veraltete Ereignis SendingRequest
10 zum Abfangen einer Anforderung und zum Anwenden eines Proxys verwendet habe, bevor es die Tür verlässt. Dieser Client ist nicht mit dem veralteten Ereignis kompatibel.
Es dauerte ein wenig mehr zu graben, um herauszufinden, wie es mit dem SendingRequest2
Ereignis zu tun; es erforderte nur ein wenig Typ Casting.
tun:
var client = new ActiveDirectoryClient(...);
client.Context.SendingRequest2 += OnSendingRequest2;
// ...
static void OnSendingRequest2(object sender, SendingRequest2EventArgse)
{
var request = ((HttpWebRequestMessage)e.RequestMessage).HttpWebRequest;
request.Proxy = new WebProxy("http://myproxy:port");
}
nicht tun Sie: (Es ist veraltet und wird eine Ausnahme erzeugen.)
var client = new ActiveDirectoryClient(...);
client.Context.SendingRequest += OnSendingRequest;
// ...
static void OnSendingRequest(object sender, SendingRequestEventArgs e)
{
e.Request.Proxy = new WebProxy("http://myproxy:port");
}
Dank kbrimington ich die Mühe zu schätzen wissen. Ich werde es als eine Antwort markieren, aber ich werde nicht in der Lage sein, es rechtzeitig zu überprüfen. – JohnKoz