今天做項(xiàng)目中進(jìn)行https請求時遇到這樣的調(diào)試錯誤,內(nèi)部錯誤:未能為 ssl/tls 安全通道建立信任關(guān)系。錯誤頁面:根據(jù)驗(yàn)證過程,遠(yuǎn)程證書無效。經(jīng)過分析,在瀏覽器中打開要進(jìn)行一個安全確認(rèn)。就是這個對話框引起的問題。在網(wǎng)上搜了一下一般的解決辦法,但是搜的內(nèi)容比較少,現(xiàn)在在這里總結(jié)一下。
using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.net;
using system.io;
using system.text;
using system.net.security;
using system.security.authentication;
using system.security.cryptography.x509certificates;
public partial class _default : system.web.ui.page
{
protected void page_load(object sender, eventargs e)
{
//for 1.1 在2.0下servicepointmanager.certificatepolicy已經(jīng)過時
//servicepointmanager.certificatepolicy = new acceptallcertificatepolicy();
//for 2.0
//servicepointmanager.servercertificatevalidationcallback = new system.net.security.remotecertificatevalidationcallback(checkvalidationresult);
httpwebrequest request = (httpwebrequest)webrequest.create("https://someurl");
request.method = "get";
httpwebresponse response = (httpwebresponse)request.getresponse();
stream receivestream = response.getresponsestream();
streamreader readstream = new streamreader(receivestream, encoding.utf8);
page.response.write(readstream.readtoend());
response.close();
readstream.close();
}
//for 2.0
public bool checkvalidationresult(object sender, x509certificate certificate, x509chain chain, sslpolicyerrors errors)
{ // always accept
return true;
}
//for 1.1
internal class acceptallcertificatepolicy : icertificatepolicy
{
public acceptallcertificatepolicy()
{
}
public bool checkvalidationresult(servicepoint spoint, system.security.cryptography.x509certificates.x509certificate cert, webrequest wrequest, int certprob)
{
// always accept
return true;
}
}
}
新聞熱點(diǎn)
疑難解答
圖片精選