2016-07-01 83 views
0

我正在嘗試下載url上的pfx文件。在Chrome上打開鏈接時,我必須選擇一個證書然後登錄。但是當我用C#WebClient嘗試它時,出現了403「Forbidden」錯誤。Webclient用ClientCertificate下載文件

如何指定證書或以編程方式繞過此步驟?

我的代碼:

using (var client = new System.Net.WebClient()) 
{ 
    client.Credentials = new System.Net.NetworkCredential(MyLogin, MyPassword); 
    client.DownloadFile(MyUrl, MyFile); 
} 

回答

0

我終於得到一個解決方案:覆蓋Web客戶端!

新的Web客戶端:

public class MyWebClient : WebClient 
{ 
    X509Certificate2 certificate; 

    public MyWebClient(X509Certificate2 certificate) 
     : base() 
    { 
     this.certificate = certificate; 
    } 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); 
     request.ClientCertificates.Add(certificate); 
     request.Credentials = this.Credentials; 
     return request; 
    } 
} 

的方式來使用它:

using (var client = new MyWebClient(MyCertificate)) 
{ 
    // optional login/password if website require both. If not, don't set the credentials 
    client.Credentials = new System.Net.NetworkCredential(MyLogin, MyPassword); 
    client.DownloadFile(MyUrl, MyFile); 
} 
+0

@MercuryX希望它會幫助你 –