2016-01-22 194 views
0

我試圖下載文件到服務器上,而是將數據寫入錯誤。請告訴我什麼是錯的。當我在「http://localhost:xxx」上使用此代碼時,一切正常。 WebClient myWebClient = new WebClient(); myWebClient.DownloadFile(remoteUri, Server.MapPath("~/test/" + "test.xml")); WebClient的DownloadFile訪問被拒絕

我更新了我的問題。這裏是我的完整代碼:

string path1 = "certificate1.p12"; 
string path2 = "certificate2.crt"; 
X509Certificate2 cert1 = new X509Certificate2(Server.MapPath(("~/test/") + path1), "", X509KeyStorageFlags.MachineKeySet); 
X509Certificate2 cert2 = new X509Certificate2(Server.MapPath(("~/tets/") + path2)); 
CertificateWebClient2 myWebClient = new CertificateWebClient2(cert1, cert2); 
string remoteUri = "https://xxxxx"; 
string path = "test.xml"; 
myWebClient.UseDefaultCredentials = true; 
myWebClient.DownloadFile(remoteUri, Server.MapPath((@"~/Files/") + path)); 


public class CertificateWebClient : WebClient 
{ 
    private readonly X509Certificate2 certificate1; 
    private readonly X509Certificate2 certificate2; 

    public CertificateWebClient(X509Certificate2 cert1, X509Certificate2 cert2) 
    { 
     certificate1 = cert1; 
     certificate2 = cert2; 
    } 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address); 
     System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate X509certificate, X509Chain chain, System.Net.Security.SslPolicyErrors errors) 
     { 
      return true; 
     }; 

     request.ProtocolVersion = HttpVersion.Version10; 
     request.Method = "Post"; 
     request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"; 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.UseDefaultCredentials = true; 
     request.ContentLength = 0; 
     request.ClientCertificates.Add(certificate1); 
     request.ClientCertificates.Add(certificate2); 
     return request; 
    } 
} 
+0

顯示錯誤,請 –

回答

0

嘗試使用默認憑據。

WebClient myWebClient = new WebClient { UseDefaultCredentials = true }; 
myWebClient.DownloadFile(remoteUri, Server.MapPath("~/test/" + "test.xml")); 
+0

我試過,但同樣的錯誤 – IgorDn

0

檢查下載是否被您的代理服務器阻止。如果是這樣,使用下面的代碼:

using (var webClient = new WebClient()) 
{ 
    // Obtain the 'Proxy' of the Default browser. 
    IWebProxy webProxy = webClient.Proxy; 

    if (webProxy != null) 
    { 
     // Use the default credentials of the logged on user. 
     webProxy.Credentials = CredentialCache.DefaultCredentials; 
    } 

    // Do stuff 
} 
+0

不幸的是,這不是幫助我 – IgorDn