2016-08-15 141 views
6

即時通訊設法從控制檯應用程序的代碼轉移到uwp,在這個控制檯應用程序中使用ServicePointManager使用所有證書,在uwp應用程序中我不使用它們,並有文本異常 - 「與服務器無法建立「。使用服務器連接的證書

問題是 - 我如何更換ServicePointManager並應用uwp中的所有證書(因爲我不知道用於此服務器的證書是什麼類型)。

ServicePointManager的代碼如下所示:

ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback 
(bypassAllCertificateStuff); 

private static bool bypassAllCertificateStuff(object sender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) 
{ 
    return true; 
} 

感謝您的回覆!

+0

是您之前使用過的控制檯應用程序發佈的ServicePointManager代碼? – oldbam

回答

1

我認爲您正在嘗試使用HttpClient,如果這是來自Windows.Web.Http命名空間,您可以添加一個篩選器,其中可以繞過某些證書錯誤。 例如:

using Windows.Web.Http; 
using Windows.Web.Http.Filters; 

var filter = new HttpBaseProtocolFilter(); 
filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted); 
var httpClient = new HttpClient(filter); 
0

您發佈的ServicePointManager代碼指示客戶端忽略服務器證書驗證錯誤。因此,如果您的服務器證書過期,或者它發佈給不同的主機,或者如果它是由您的客戶機器不知道的證書頒發機構簽名的 - 您的調用代碼將不會在意並繼續與該服務器通信。根據您的要求,它可能會或可能不會是禁用驗證的明智決定。但是,如果您確實要禁用驗證,並且您使用System.Net.Http.HttpClient,則可以在StackOverflow上使用check this answer

另外,請記住,您可以在UWP應用程序中使用兩個HTTP客戶端。有關兩者的比較,請參見this link

相關問題