将文件上传到WCF 3.5服务

问题描述:

我有一个.NET 3.5 WCF服务。它看起来像这样:将文件上传到WCF 3.5服务

namespace FileUploaderWcfRestService 
{ 
    [ServiceContract] 
    interface IUploaderService 
    { 
     [OperationContract(IsOneWay = true)] 
     [WebInvoke(Method = "POST", UriTemplate = "/UploadFile?fileName={fileName}")] 
     void UploadFile(string fileName, Stream fileContents); 
    } 

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class UploaderService : IUploaderService 
    { 
     public void UploadFile(string fileName, Stream fileContents) 
     { 
      // save to disk code 
     } 
    } 
} 

在web.config中,我有端点设置如下:

<endpoint address="" 
     binding="webHttpBinding" 
     contract="FileUploaderWcfRestService.IUploaderService"> 

在客户端,我尝试用WebClient的对象调用它,但总是得到错误415(不支持的媒体类型)。

var wc = new WebClient(); 
string url = "http://localhost:23619/UploaderService.svc/UploadFile?fileName=todo.sdf"; 

byte[] data = GetBytesFromFile("ToDo.sdf"); // gets the file into a byte array 
byte[] resp = wc.UploadData(url, "POST", data); 

我试过不同的URL变体,但没有任何帮助。 我在这里错过了什么?

您是否尝试过将WebClient上的ContentType标头设置为文件的内容类型?

wc.Headers.Add("Content-Type","application/octet-stream"); 
+0

哇,谢谢。完美工作。 – AngryHacker