2010-12-15 65 views

回答

16

UploadFile方法返回一個byte[],其中包含遠程服務器返回的響應。根據服務器如何管理對上傳請求的響應(以及錯誤條件(請參閱下面的注1)),您需要檢查該響應。您可以通過將其轉換爲字符串得到字符串響應,例如這將寫入控制檯窗口的響應:

byte[] rawResponse = webClient.UploadFile(url,fileName); 
Console.WriteLine("Remote Response: {0}", System.Text.Encoding.ASCII.GetString(rawResponse)); 

也就是說如果遠程服務器不是HTTP 200(即成功)返回的任何其他通話UploadFile會拋出WebException。這可以捕捉並處理任何最適合您的應用程序的方式。

所以把所有的一起

try 
{ 
    WebClient webClient = new WebClient(); 
    byte[] rawResponse = webClient.UploadFile(url,fileName); 

    string response = System.Text.Encoding.ASCII.GetString(rawResponse); 

    ... 
    Your response validation code 
    ... 
} 
catch (WebException wexc) 
{ 
    ... 
    Handle Web Exception 
    ... 
} 

注1作爲一個例子,我有一個文件上傳服務,將永遠不會發出比HTTP 200碼以外的任何其他,所有錯誤的服務,並且這些內抓被「解析」成返回給調用者的XML結構。調用者然後解析該XML以驗證上傳是否成功。

+0

謝謝,一個很好的解釋。我正在通過Sharepoint網站,所以我期望找到正常的Web服務器響應,因此無需檢查響應。 – 2010-12-16 08:23:31

2

在msdn提供的examples中,他們檢查響應,所以它可能是很好的風格,但我傾向於自己不做,並且還沒有被燒燬。

2

如果上傳返回200(或200範圍)以外的StatusCode,則WebClient.UploadFile應引發WebException。

作爲一個插件,我在BizArk上有一個代碼參考庫,它包含一個WebHelper類,可以方便地同時上傳多個文件和表單值。該項目被稱爲BizArk

+0

因此,如果響應不好,那麼WebException會自動提升? – 2010-12-15 17:14:05

相關問題