2011-08-17 29 views
1

我有一個WCF服務啓動並運行,它將文件保存到我的服務器。我已通過發送一個.txt文件和一個.xls文件進行了測試。 .xls文件的大小是90kb。WCF服務發送.txt或.xls但不是.gz(壓縮文件)

現在我有一個壓縮文件.gz,這只是在大小70KB,但試圖完成此操作時,我得到

遠程服務器返回了意外的響應:(400)
錯誤的請求。

當我試圖搜索這個錯誤的請求時,大多數結果都會導致發送一個大文件,並且需要更改配置文件中的設置。

這不是我的原因,因爲.gz文件小於.xls文件!

有沒有人有任何想法,爲什麼這種類型的文件不能發送相同的文本或Excel文件?

編輯:代碼添加

這裏是調用服務

 string name = "New Doc"; 
     string file = @"C:/Users/Admin/Desktop/fileZipped.gz";   
     string ext = file.Split('.')[1]; 

     Stream stream = File.OpenRead(file); 
     byte[] bytes = new byte[stream.Length]; 
     stream.Read(bytes, 0, (int)stream.Length); 
     stream.Close(); 

     var uploadFileServiceClient = new UploadFileServiceClient(); 
     uploadFileServiceClient.UploadFile(name, bytes, ext); 

的方法和這裏是我的服務:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  
public class UploadFileService : IUploadFileService 
{ 
    public bool UploadFile(string name, byte[] bytes, string extension) 
    { 
     string importDir = ConfigurationSettings.AppSettings["UploadFileDir"]; 
     if (String.IsNullOrEmpty(importDir)) 
      return false; 

     if (!Directory.Exists(importDir)) 
      return false; 

     string outputFile = Path.Combine(importDir, Guid.NewGuid() + "." + extension); 
     string filename = outputFile.Split('\\')[2]; 

     using (StreamWriter sw = new StreamWriter(outputFile)) 
     { 
      sw.WriteLine(bytes); 
      sw.Flush(); 
      sw.Close(); 
     } 
      return true; 
    } 
} 

就像我說的它適用於文本或Excel文件。

+0

你試圖使用[跟蹤](http://msdn.microsoft.com/en-us/library/ms730342.aspx)以獲取更多的錯誤細節?同時顯示一些代碼會更容易理解問題所在。 – Reniuz

+0

請求參數的格式是什麼?一個字節數組?編碼的字符串? –

+0

我試過跟蹤,發現在請求標題實體有一個內容長度爲103144和內容類型,但在響應標題的內容長度爲0? – freerider11

回答

0

如果沒有「過濾代理」插圖中:

我們有類似的東西和解決方案橫空出世設置MIME類型客戶端+服務器相應的...