J'explorais le même problème. Il a fallu creuser, mais j'ai trouvé une solution. Maintenant, je me rends compte que vous avez demandé spécifiquement comment appliquer un HttpClientHandler
. Je ne sais pas si cela peut être fait; Cependant, vous pouvez appliquer un proxy. Voici comment.
La classe ActiveDirectoryClient
fournit une propriété appelée DataServiceContextWrapper
Context
, qui est, sans surprise, une enveloppe à un DataServiceContext
.
C'est bon. Cela réduit le problème à déterminer comment appliquer un proxy à la classe DataServiceContext
. J'ai utilisé un vieux code que j'avais assis, et les choses ont plutôt explosé. C'est parce que j'ai utilisé l'événement obsolète SendingRequest
pour intercepter une demande et appliquer un proxy avant qu'il ne sorte de la porte. Ce client n'est pas compatible avec l'événement déprécié.
Il a fallu creuser un peu plus pour comprendre comment le faire avec l'événement SendingRequest2
; il a seulement exigé un petit moulage de type.
Faites ceci:
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");
}
Ne pas le faire: (Il est dépréciée et produira une exception.)
var client = new ActiveDirectoryClient(...);
client.Context.SendingRequest += OnSendingRequest;
// ...
static void OnSendingRequest(object sender, SendingRequestEventArgs e)
{
e.Request.Proxy = new WebProxy("http://myproxy:port");
}
Merci kbrimington, j'apprécie l'effort. Je vais le marquer comme une réponse, mais je ne serai pas en mesure de vérifier en temps opportun. – JohnKoz