2016-12-01 2 views
1

Ich habe den folgenden C# -Code, der versucht, eine https-Anfrage an eine bestimmte URL zu machen. Wenn ich die URL so ändere, dass sie auf den QAS-Server verweist, was kein https ist, dann funktioniert alles. Ich habe zahlreiche Kombinationen von Einstellungen ausprobiert, aber nichts, was ich tue, scheint das richtig zu funktionieren. Sie können einige der verschiedenen Kombinationen von Dingen sehen, die ich in den Kommentaren gemacht habe.401 Nicht autorisierte Ausnahme mit WebRequest von SSL

var request = (HttpWebRequest)WebRequest.Create(nextUrl); 
request.AllowAutoRedirect = false; 
request.UseDefaultCredentials = true; 
request.KeepAlive = false; 
//request.PreAuthenticate = true; 
//request.Credentials = CredentialCache.DefaultNetworkCredentials; 
//request.Credentials = new NetworkCredential("name", "pass", "domain"); 
ServicePointManager.ServerCertificateValidationCallback = AcceptAllCertifications; 
HttpWebResponse response; 
using (response = (HttpWebResponse)request.GetResponse()) 
{ 
    //Do Something 
} 
+0

Welche Ausnahme (n) bekommen? Können Sie das SSL-Problem in einer Cert-Validierungs-Callback-Delegate-Methode abfangen und sehen? –

Antwort

0

Ihr Code für das Zertifikat Rückruf falsch aussieht, sollte es aussehen:

ServicePointManager.ServerCertificateValidationCallback = 
    new RemoteCertificateValidationCallback(AcceptAllCertifications); 

Ich nehme an, Sie haben die richtige Methode Signatur für die AcceptAllCertifications. Auch die Klasse, die Sie verwenden, wenn nextUrl http ist, wird standardmäßig ungesichert, wenn es https ist, wird es standardmäßig zu sichern.

+0

Der Rückruf ist korrekt. Wenn du diese volle Aussage in das einfügst, hast du es auch, aber es wird nicht mehr benötigt und du kannst die kurze Hand machen, die ich habe (ich liebe Nachschärfer). Wie ich schon sagte ist die URL https. Wenn ich es ändere, um auf einen Testserver für http zu zeigen, dann funktioniert es gut, aber in diesem Fall ist es https, das scheitert. –

+0

Ich habe keine ReSharper, so gut zu wissen. Setzen Sie explizit ** https ** in den Parameter? Sie sollten auch versuchen, den Benutzeragenten so zu ändern, dass er benötigt wird. – Greg

+0

Die URL sagt explizit https ja. Wie sollte ich den Client ändern? –

Verwandte Themen