2016-07-01 10 views
0

Ich versuche, eine PFX-Datei auf einer URL herunterzuladen. Als ich den Link auf Chrome öffnete, musste ich ein Zertifikat auswählen und mich dann anmelden. Aber wenn ich es mit C# WebClient versuche, bekam ich einen Fehler 403 "Verboten".Webclient DownloadFile mit ClientCertificate

Wie kann ich ein Zertifikat angeben oder diesen Schritt programmgesteuert umgehen?

Mein Code:

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

Antwort

0

ich endlich eine Lösung: zwingende WebClient!

New WebClient:

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; 
    } 
} 

Die Art und Weise, es zu benutzen:

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 es Ihnen helfen, zu hoffen, –