2016-12-08 122 views
1

我寫了一個C#應用程序,通過System.Net.Http.HttpClient(例如client.GetAsync(uri);)執行web請求。使用.Net運行時編譯並執行它,所有這些調用都是成功的。但是,使用Mono進行編譯和運行時,它們會失敗並出現異常(「IOException Authentication或decryption failed」)。代理後面的單個http請求

但是,切換到未通過代理的網絡可以解決問題。所以最後,這不是一個證書或任何問題,而只是代理人的問題。

同樣適用於tlstest工具:使用代理失敗,無法正常工作。

如何配置單聲道以使用代理設置/使用系統代理設置?

+0

也許與此相關:http://stackoverflow.com/a/21291774/3508004。在Mono中,沒有Windows證書存儲。 – mtheriault

+0

@ mtheriault證書(通常)是mono的問題,但這不是問題的根源,因爲我已經正確地處理了這個問題。 – stefan

回答

1

你可以嘗試在HttpClient中設置代理嗎?如有必要,您可以設置代理憑據。

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

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

    HttpClient client = new HttpClient(handler); 
+0

這不是一個理想的解決方案。這個問題肯定存在於Mono中,所以開發我的應用程序以至於它非常不尊重系統代理設置。不過謝謝 – stefan

0

嘗試使用modernhttpclient組件。這個庫通過一個自定義的HttpClient處理程序爲Xamarin應用程序帶來了最新的特定於平臺的網絡庫,它可以爲您處理這類問題。