将文件上传到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");
哇,谢谢。完美工作。 – AngryHacker