2016-04-22 8 views
2

Wie verwende ich die Azure Active Directory-Diagrammclient-API? Wie würde ich den zugrunde liegenden HttpClient für die Verwendung eines HttpClientHanders konfigurieren, in dem ich einen authentifizierten Anwendungsproxy definieren kann?Verwenden von AuthenticationContext & ActiveDirectoryClient mit einem Anwendungsproxy?

var proxy = new WebProxy(...); 
proxy.Credentials = ...; 
var handler = new HttpClientHandler { Proxy = proxy, UseProxy = true}; 
var auth = new AuthenticationContext(...); 
var client = new ActiveDirectoryClient(...); 

Oder kann ich den Graph-Client nicht hinter einem Proxy verwenden?

Danke

Antwort

0

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 SendingRequest10 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"); 
} 
+0

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