1

Ich erstelle Windows Universal App, mit Visual Studio 2015, Framework 4.5.2. Zielversion 10586, Mindestversion 10240.Assign CredentialCache Objekt zu einem HttpWebRequest.Credentials in Windows Universal Apps funktionieren nicht

Meine App muss mit https Seite mit Anmeldeinformationen authentifizieren. Ich habe viele Beispiele wie diese lesen:

WebRequest req =  HttpWebRequest.Create("https://intranet.anyweb.com"); 
NetworkCredential ntCred = new NetworkCredential(user, pass); 
req.Credentials = ntCred; 
CredentialCache cacheCred = new CredentialCache(); 
cacheCred.Add(new Uri("https://intranet.anyweb.com"), "NTLM", ntCred); 
req.Credentials = cacheCred; 
req.Method = "GET"; 
var resp = (HttpWebResponse)req.GetResponseAsync(); 

Dieses Beispiel funktioniert in Desktop-App in Ordnung, aber wenn ich versuche, das gleiche in meinem Universal-APPs zu machen, und excute GetResponseAsync, diesen Fehler ausgelöst:

"Der Wert 'System.Net.CredentialCache' wird für die Eigenschaft 'Anmeldeinformationen' nicht unterstützt."

Derselbe Code in einer Standard-Desktop-Windows-App funktioniert einwandfrei, warum kann ich also kein CredentialCache-Objekt den HttpWebRequest-Anmeldeinformationen in meiner Universal App zuweisen?

Antwort

1

Ich empfehle Ihnen, lesen Sie die folgenden Microsot Blog post, wo Sie lernen, dass System.Net.Http.HttpClient und Windows.Web.Http.HttpClient sind die empfohlenen APIs für universelle Anwendungen über ältere entmutigte APIs wie WebClient und HttpWebRequest.

den folgenden Code verwenden, sollten Sie in der Lage sein, Benutzerdaten zu verwenden:

HttpBaseProtocolFilter filter = new HttpBaseProtocolFilter(); 
filter.ServerCredential = new PasswordCredential(uri, username, password); 
HttpClient httpClient = new HttpClient(filter); 

HttpRequestMessage request = new HttpRequestMessage(); 
request.Method = HttpMethod.Get; 
request.RequestUri = new Uri(uri, UriKind.Absolute); 

HttpResponseMessage response = await httpClient.SendRequestAsync(request); 

Wenn der Server NTLM-Authentifizierung anfordert, die HTTP-Stack des Betriebssystems wird die Authentifizierung mit den Anmeldeinformationen ausführen. Bei Apps mit Unternehmensfunktion werden die Windows-Anmeldedaten des Benutzers verwendet, wenn für die ServerCredential-Eigenschaft keine Anmeldeinformationen festgelegt sind. Bei anderen Apps wird standardmäßig die Benutzeroberfläche angezeigt, in der nach Benutzerberechtigungen gefragt wird