Ich versuche, eine Web-API 2-Methode aufzurufen, die Auth von einer Konsolenanwendung benötigt, die auf meinem Desktop ausgeführt wird, wo ich die Berechtigung habe, aber 401 Unathorized. Ich weiß, dass ich eine Autorisierung habe, weil es funktioniert, wenn ich den gleichen Anruf von einem Webbrowser aus mache. So kann ein Browser meine Standard-Login-ID/PW an die API senden, aber der WebClient von .NET kann nicht? Das scheint verrückt. Es muss einen Weg geben, dies zu tun, ohne meine ID/Pw in die Konsolen-App einzugeben.Verwenden von Standardanmeldeinformationen zum Aufrufen von API in der Konsolenanwendung
Das Folgende ist, was ich in einer Konsolen-App verwende und es funktioniert nicht.
Dies verwendet Windows Auth als Intranet-Zeug.
Dies löst eine Ausnahme aus "Der Remote-Server hat einen Fehler zurückgegeben: (401) Nicht autorisiert."
using(var c = new WebClient())
{
c.UseDefaultCredentials = true;
string value = c.DownloadString("http://localhost:62659/api/Store/GetData");
}
Ich versuchte auch, die unten, und wenn ich die Maus über DefaultNetworkCredentials der Benutzername/pw leere Strings sind. Warum kann .NET das nicht herausfinden?
using(var c = new WebClient())
{
var creds = new CredentialCache();
var uri = new Uri("http://localhost:62659/api/Store/GetData");
creds.Add(uri, "ntlm", System.Net.CredentialCache.DefaultNetworkCredentials);
c.Credentials = creds;
string value = c.DownloadString(uri);
}
Erhalten Sie eine Ausnahme oder Fehlerinformationen, die Sie teilen könnten? – gmiley
Fiddler2 zeigt Ihnen die Anmeldeinformationen, die mit der get-Anforderung übergeben wurden. – samosaris
Ich verwende [Postman] (https://www.getpostman.com/), um diese Art von Problemen zu beheben. – jomsk1e