2016-07-01 2 views
0

Я пытаюсь загрузить файл pfx по URL-адресу. На хроме, когда я открываю ссылку, мне нужно было выбрать сертификат, а затем войти в систему. Но когда я пытаюсь использовать C# WebClient, я получил ошибку 403 «Запрещено».Webclient DownloadFile with ClientCertificate

Как я могу указать сертификат или обойти этот шаг программно?

Мой код:

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

ответ

0

я, наконец, получить решение: переопределение 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; 
    } 
} 

Путь использовать:

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 надеюсь, что это поможет –

Смежные вопросы