2016-12-08 7 views
1

Ich habe eine C# -App geschrieben, die Web-Anfragen über den System.Net.Http.HttpClient (z. B. client.GetAsync(uri);) ausführt. Bei der Kompilierung und Ausführung mit der .Net-Laufzeit sind alle diese Aufrufe erfolgreich. Wenn sie jedoch mit Mono kompiliert und ausgeführt werden, schlagen sie mit Ausnahmen fehl ("IOException Authentication or decryption failed").Mono HTTP-Anfragen hinter Proxy

Durch den Wechsel zu einem Netzwerk, das den Proxy nicht durchläuft, wird das Problem jedoch behoben. Schlussendlich ist es kein Zertifikat oder irgendein Problem, sondern nur das Problem des Proxy.

Gleiches gilt für das Tlstest-Tool: Fällt kläglich mit dem Proxy, funktioniert ohne es.

Wie konfiguriere ich Mono, um die Proxy-Einstellungen zu verwenden/die System-Proxy-Einstellungen zu verwenden?

+0

Vielleicht im Zusammenhang damit: http://StackOverflow.com/a/21291774/3508004. In Mono gibt es keinen Windows-Zertifikatspeicher. – mtheriault

+0

@mtheriault die Zertifikate sind (im Allgemeinen) ein Problem mit Mono, aber das ist nicht die Quelle von Problemen hier, wie ich bereits richtig damit umgehen. – stefan

Antwort

1

Können Sie versuchen, den Proxy in HttpClient zu setzen? Sie können bei Bedarf Proxy-Anmeldeinformationen festlegen.

WebProxy proxy = new WebProxy("proxyaddress", port); 

    HttpClientHandler handler = new HttpClientHandler() 
    { 
     Proxy = proxy 
    }; 

    HttpClient client = new HttpClient(handler); 
+0

Das ist nicht wirklich eine wünschenswerte Lösung. Das Problem liegt definitiv in Mono, so dass meine App so entwickelt wird, dass sie die System-Proxy-Einstellung nicht sonderlich respektiert. Danke trotzdem – stefan

0

Versuchen Sie modernhttpclient Komponente zu verwenden. Diese Bibliothek bringt die neuesten plattformspezifischen Netzwerkbibliotheken zu Xamarin-Anwendungen über einen benutzerdefinierten HttpClient-Handler, der diese Art von Problemen für Sie behandeln kann.